﻿#region Header

// <copyright file="DailyPlans.cs" company="Thomas Dilts">
//
// CrossConnect Bible and Bible Commentary Reader for CrossWire.org
// Copyright (C) 2011 Thomas Dilts
//
// This program is free software: you can redistribute it and/or modify
// it under the +terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program.  If not, see http://www.gnu.org/licenses/.
// </copyright>
// <summary>
// Email: thomas@cross-connect.se
// </summary>
// <author>Thomas Dilts</author>

#endregion Header

namespace Sword
{
    using System;
    using System.Collections.Generic;
    using System.Diagnostics;
    using System.Linq;

    public class DailyPlans
    {
        /*
        #region Constants

        /// <summary>
        ///     Constant for the number of books in the Bible
        /// </summary>
        private const int BooksInBible = 66;

        private const int BooksInNt = 27;

        private const int BooksInOt = 39;

        /// <summary>
        ///     Constant for the number of chapters in the Bible
        /// </summary>
        private const int ChaptersInBible = 1189;

        /// <summary>
        ///     Constant for the number of chapters in the OT
        /// </summary>
        private const int ChaptersInOt = 929;

        private const short ProverbsBookNum = 19;

        private const short ProverbsVerseEnd = 16401;

        private const short PsalmsBookNum = 18;

        private const short PsalmsVerseStart = 12870;

        /// <summary>
        ///     Constant for the number of verses in the Bible
        /// </summary>
        private const short VersesInBible = 31102;

        private const short VersesInNt = 7956;

        private const short VersesInOt = 23146;

        #endregion

        #region Static Fields
        
        public static int[] BibleChaptersInChronologicalOrder =
            {
                0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 436, 437, 438, 439,
                440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450,
                451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461,
                462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
                473, 474, 475, 476, 477, 11, 12, 13, 14, 15, 16, 17,
                18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31
                , 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
                45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58
                , 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
                72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85
                , 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
                99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
                110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
                121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131,
                567, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141,
                142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152,
                153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
                164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
                175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185,
                186, 568, 187, 188, 189, 190, 191, 192, 193, 194, 195,
                196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
                207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217,
                218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
                229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
                240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250,
                251, 252, 253, 254, 255, 488, 536, 256, 257, 258, 259,
                484, 504, 508, 511, 529, 533, 597, 617, 618, 619, 260,
                261, 262, 494, 512, 531, 540, 263, 264, 265, 266, 495,
                598, 600, 601, 602, 605, 606, 607, 267, 268, 269, 270,
                483, 485, 486, 487, 491, 493, 496, 498, 338, 339, 520,
                521, 522, 526, 561, 562, 564, 340, 341, 342, 550, 554,
                555, 343, 558, 565, 569, 570, 344, 345, 346, 347, 579,
                580, 581, 271, 348, 349, 610, 583, 584, 272, 350, 351,
                352, 353, 478, 479, 492, 499, 500, 501, 524, 545, 566,
                573, 577, 578, 582, 609, 273, 354, 502, 506, 510, 513,
                516, 274, 275, 355, 527, 530, 537, 552, 276, 356, 497,
                542, 543, 544, 546, 547, 277, 278, 357, 509, 528, 563,
                599, 279, 280, 281, 480, 481, 489, 490, 505, 532, 282,
                283, 284, 503, 517, 535, 538, 539, 541, 285, 286, 287,
                482, 515, 518, 519, 288, 289, 534, 572, 574, 575, 576,
                290, 358, 359, 507, 585, 586, 587, 360, 361, 362, 608,
                615, 616, 620, 621, 622, 363, 364, 365, 366, 604, 588,
                589, 590, 591, 592, 593, 594, 595, 291, 292, 514, 548,
                571, 293, 294, 367, 549, 596, 671, 672, 673, 674, 675,
                676, 677, 678, 628, 629, 630, 631, 632, 633, 634, 635,
                636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646,
                647, 648, 649, 650, 651, 295, 296, 368, 369, 297, 370,
                298, 371, 372, 373, 613, 611, 623, 624, 625, 626, 627,
                299, 374, 652, 653, 654, 655, 656, 659, 660, 661, 662,
                663, 664, 665, 666, 667, 668, 669, 670, 300, 301, 375,
                657, 658, 302, 303, 304, 376, 377, 378, 305, 379, 380,
                381, 382, 306, 383, 307, 308, 309, 310, 311, 312, 384,
                385, 386, 387, 388, 389, 888, 559, 560, 313, 314, 315,
                316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 390,
                326, 391, 889, 890, 891, 892, 327, 392, 679, 680, 681,
                682, 683, 684, 685, 686, 879, 880, 881, 882, 883, 884,
                885, 886, 887, 393, 687, 688, 689, 690, 893, 894, 895,
                896, 897, 898, 899, 394, 328, 329, 691, 692, 693, 694,
                695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705,
                395, 396, 397, 525, 862, 863, 864, 865, 866, 867, 868,
                869, 870, 871, 872, 873, 874, 875, 706, 707, 708, 709,
                710, 711, 712, 713, 714, 715, 716, 717, 553, 718, 719,
                720, 721, 722, 723, 724, 725, 726, 330, 331, 523, 557,
                612, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736,
                737, 738, 739, 740, 741, 742, 743, 744, 332, 333, 398,
                399, 900, 901, 902, 334, 335, 400, 401, 906, 907, 908,
                745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755,
                756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766,
                767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777,
                778, 779, 780, 781, 782, 783, 784, 551, 556, 336, 337,
                402, 903, 904, 905, 785, 786, 787, 788, 789, 790, 791,
                792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802,
                803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813,
                814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824,
                825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835,
                836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846,
                847, 848, 849, 876, 877, 878, 850, 851, 852, 853, 854,
                855, 856, 857, 858, 859, 860, 861, 403, 404, 405, 406,
                407, 408, 614, 909, 910, 911, 912, 913, 914, 915, 916,
                917, 918, 919, 920, 921, 922, 923, 924, 426, 427, 428,
                429, 430, 431, 432, 433, 434, 435, 409, 410, 411, 412,
                413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423,
                424, 425, 603, 925, 926, 927, 928, 973, 929, 974, 930,
                931, 957, 975, 932, 976, 977, 997, 998, 999, 1000, 958
                , 1001, 959, 978, 933, 934, 935, 979, 939, 940, 983,
                941, 980, 936, 960, 961, 937, 938, 942, 962, 1002, 943
                , 963, 944, 964, 981, 945, 965, 946, 1003, 1004, 1005,
                1006, 982, 984, 985, 986, 987, 988, 1007, 989, 947,
                966, 948, 949, 990, 991, 967, 1008, 950, 968, 951, 992
                , 993, 969, 952, 953, 954, 970, 994, 1009, 1010, 1011,
                1012, 1013, 955, 971, 995, 1014, 1015, 956, 972, 996,
                1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024,
                1025, 1026, 1027, 1028, 1029, 1030, 1031, 1146, 1147,
                1148, 1149, 1150, 1032, 1033, 1091, 1092, 1093, 1094,
                1095, 1096, 1034, 1035, 1111, 1112, 1113, 1114, 1115,
                1116, 1117, 1118, 1036, 1062, 1063, 1064, 1065, 1066,
                1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075,
                1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084,
                1085, 1086, 1087, 1088, 1089, 1090, 1046, 1047, 1048,
                1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057,
                1058, 1059, 1060, 1061, 1037, 1038, 1039, 1040, 1041,
                1042, 1043, 1044, 1045, 1107, 1108, 1109, 1110, 1132,
                1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105,
                1106, 1119, 1120, 1121, 1122, 1123, 1124, 1129, 1130,
                1131, 1151, 1152, 1153, 1154, 1155, 1133, 1134, 1135,
                1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144,
                1145, 1125, 1126, 1127, 1128, 1156, 1157, 1158, 1166,
                1159, 1160, 1161, 1162, 1163, 1164, 1165, 1167, 1168,
                1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177,
                1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186,
                1187, 1188
            };
        */
        private abstract class DailyPlanSchedule
        {
            public abstract int[][] Schedule { get; }
        }
        private class ChapterRandom180 : DailyPlanSchedule
        {
            public override int[][] Schedule
            {
                get
                {
                    return new[]
                               {
                                   new[] { 407, 1059, 792, 113, 1071, 501, 1160 },
                                   new[] { 445, 634, 928, 322, 403, 688, 347, 257 },
                                   new[] { 418, 453, 743, 1058, 325, 390, 719 },
                                   new[] { 476, 827, 665, 101, 155, 591, 821 }, new[] { 3, 735, 52, 27, 645, 986, 344 },
                                   new[] { 683, 464, 924, 1118, 197, 293, 998 }, new[] { 1098, 819, 275, 69, 871, 968 },
                                   new[] { 666, 298, 621, 627, 1024, 752 },
                                   new[] { 916, 659, 198, 628, 406, 559, 547, 1085, 751 },
                                   new[] { 941, 299, 839, 676, 761 }, new[] { 369, 964, 999, 1121, 574, 205, 573 },
                                   new[] { 274, 593, 264, 466, 1035, 428, 556, 305 },
                                   new[] { 632, 979, 7, 820, 1068, 416 },
                                   new[] { 898, 905, 1070, 1177, 754, 169, 1137, 1043 }, new[] { 18, 79, 804, 427, 164 },
                                   new[] { 51, 102, 1156, 560, 585, 195, 250 }, new[] { 512, 1052, 221, 162, 942 },
                                   new[] { 963, 707, 295, 96, 541, 400, 549 },
                                   new[] { 729, 319, 765, 776, 878, 603, 1086, 620, 658 },
                                   new[] { 448, 722, 20, 607, 266, 360, 21 }, new[] { 1157, 649, 1143, 650, 686, 442 },
                                   new[] { 127, 61, 610, 234, 106, 10, 496 },
                                   new[] { 1125, 431, 890, 239, 510, 44, 1073, 1112 },
                                   new[] { 245, 132, 94, 57, 232, 638 }, new[] { 281, 599, 716, 123, 233 },
                                   new[] { 151, 846, 70, 717, 474, 53 }, new[] { 533, 956, 1056, 471, 887, 302, 592 },
                                   new[] { 973, 855, 175, 1142, 791 }, new[] { 24, 349, 328, 1175, 363, 757 },
                                   new[] { 1132, 60, 392, 489, 1018, 443, 457, 702 },
                                   new[] { 62, 656, 747, 611, 383, 767, 425 }, new[] { 581, 376, 799, 82, 499 },
                                   new[] { 133, 1099, 810, 1159, 279, 219, 642 }, new[] { 321, 384, 381, 1049, 283, 991 },
                                   new[] { 854, 1067, 1116, 451, 311, 674, 869 },
                                   new[] { 1053, 1062, 1072, 829, 465, 258 }, new[] { 285, 881, 166, 436, 706, 796 },
                                   new[] { 879, 63, 976, 635, 684, 301 },
                                   new[] { 690, 410, 888, 326, 373, 1182, 262, 693 },
                                   new[] { 679, 929, 731, 136, 449, 654, 528 }, new[] { 345, 107, 42, 608, 584, 1135 },
                                   new[] { 935, 555, 500, 691, 604, 630 }, new[] { 170, 73, 439, 612, 953, 187, 1162 },
                                   new[] { 961, 223, 477, 368, 271, 912, 452, 801 },
                                   new[] { 395, 617, 790, 420, 149, 1003 }, new[] { 936, 1012, 602, 30, 783 },
                                   new[] { 1123, 1005, 254, 618, 922, 794 }, new[] { 288, 904, 86, 207, 358, 193 },
                                   new[] { 1108, 1082, 537, 255, 158, 487, 723 }, new[] { 84, 990, 422, 59, 160 },
                                   new[] { 841, 701, 125, 985, 569, 297 }, new[] { 865, 637, 58, 273, 1105, 625, 539 },
                                   new[] { 782, 1188, 341, 755, 971 }, new[] { 769, 318, 768, 933, 1032 },
                                   new[] { 877, 992, 1186, 485, 542, 56, 461, 92, 787 },
                                   new[] { 378, 826, 454, 286, 759, 832, 129 }, new[] { 969, 957, 28, 651, 1001 },
                                   new[] { 708, 190, 1004, 647, 884 }, new[] { 229, 1165, 72, 862, 312, 1066, 519 },
                                   new[] { 571, 1141, 795, 248, 120 }, new[] { 696, 71, 981, 292, 1044 },
                                   new[] { 967, 470, 534, 444, 237, 1040 }, new[] { 397, 1109, 294, 333, 119 },
                                   new[] { 1090, 762, 952, 19, 282, 216 },
                                   new[] { 613, 440, 779, 435, 350, 513, 660, 889, 1106, 615 },
                                   new[] { 429, 475, 982, 382, 213, 490, 586 }, new[] { 954, 484, 619, 402, 1041, 456 },
                                   new[] { 793, 385, 812, 926, 1091, 636, 624, 1042 },
                                   new[] { 433, 815, 351, 36, 393, 122, 849 },
                                   new[] { 243, 590, 314, 251, 588, 522, 750, 825 },
                                   new[] { 176, 182, 518, 1019, 447, 413, 11, 856 },
                                   new[] { 146, 1097, 249, 128, 677, 179 },
                                   new[] { 338, 882, 1115, 1187, 553, 919, 459, 327 }, new[] { 142, 616, 359, 291 },
                                   new[] { 780, 1179, 391, 1008, 661, 352 }, new[] { 680, 1074, 17, 1026, 5, 1169 },
                                   new[] { 738, 868, 984, 1167, 1080, 622, 923 },
                                   new[] { 828, 535, 664, 241, 253, 993, 996 }, new[] { 1183, 587, 805, 215, 353, 421 },
                                   new[] { 409, 1171, 1055, 852, 398, 1094, 417 }, new[] { 375, 153, 524, 75, 100 },
                                   new[] { 727, 404, 1015, 209, 85 }, new[] { 185, 1020, 527, 65, 1151, 509 },
                                   new[] { 1013, 1154, 309, 13, 1093, 1078, 589, 640 },
                                   new[] { 97, 1002, 6, 903, 900, 925 },
                                   new[] { 600, 481, 1180, 959, 1166, 728, 1100, 631 },
                                   new[] { 1057, 38, 1148, 797, 1060, 597, 37, 1163 },
                                   new[] { 95, 822, 876, 482, 536, 99, 364 },
                                   new[] { 692, 1138, 806, 491, 695, 834, 269, 811 },
                                   new[] { 342, 1145, 835, 329, 629, 949 }, new[] { 89, 605, 671, 907, 858, 1128, 1046 },
                                   new[] { 915, 814, 277, 362, 492, 733, 568, 49, 563 }, new[] { 419, 415, 130, 937 },
                                   new[] { 859, 978, 159, 1185, 934, 1133 }, new[] { 1069, 742, 124, 847, 1022, 652, 550 }
                                   , new[] { 1103, 958, 570, 989, 335, 388, 785 },
                                   new[] { 576, 803, 424, 1064, 670, 45, 270, 655 },
                                   new[] { 1016, 502, 370, 1155, 896, 192, 951 }, new[] { 966, 704, 479, 208, 775 },
                                   new[] { 995, 76, 1021, 1107, 488, 446 }, new[] { 583, 296, 965, 699, 1111, 178, 892 },
                                   new[] { 880, 778, 1147, 886, 860, 648, 920 },
                                   new[] { 48, 899, 261, 894, 256, 188, 462, 523, 698 },
                                   new[] { 772, 227, 532, 774, 203, 112, 1095, 711 }, new[] { 818, 1120, 31, 222, 343 },
                                   new[] { 1065, 734, 687, 853, 1081, 171, 50, 944 },
                                   new[] { 8, 739, 366, 87, 558, 1033, 432 }, new[] { 741, 824, 714, 517, 150, 675 },
                                   new[] { 851, 897, 843, 163, 1161, 1114, 469 }, new[] { 715, 902, 230, 354, 1173, 863 },
                                   new[] { 83, 0, 749, 594, 837, 300 }, new[] { 720, 15, 911, 872, 1010, 23 },
                                   new[] { 1153, 138, 109, 157, 167, 857 }, new[] { 1140, 520, 914, 950, 1048, 310, 580 },
                                   new[] { 531, 1028, 41, 316, 786, 516, 4 }, new[] { 118, 1029, 538, 579, 331, 848 },
                                   new[] { 672, 201, 697, 236, 861, 678, 1129 }, new[] { 777, 511, 867, 548, 320, 377, 1 }
                                   , new[] { 386, 414, 709, 643, 595, 1113, 372 },
                                   new[] { 244, 530, 703, 259, 29, 290, 1096, 842 },
                                   new[] { 1006, 939, 893, 497, 1030, 582 }, new[] { 25, 1009, 214, 831, 870, 220 },
                                   new[] { 199, 14, 962, 766, 606, 598 }, new[] { 40, 495, 154, 781, 946 },
                                   new[] { 503, 47, 1131, 498, 242, 1076 },
                                   new[] { 473, 478, 307, 324, 1045, 1117, 9, 543 },
                                   new[] { 1126, 1104, 43, 88, 601, 724, 332 },
                                   new[] { 315, 770, 921, 909, 816, 1007, 763 }, new[] { 521, 1014, 960, 240, 504, 746 },
                                   new[] { 434, 669, 798, 1146, 117, 813 }, new[] { 1027, 1127, 745, 165, 81, 807, 260 },
                                   new[] { 845, 565, 1025, 685, 526, 411, 480 },
                                   new[] { 394, 110, 947, 268, 913, 379, 940 }, new[] { 623, 184, 211, 515, 303 },
                                   new[] { 906, 895, 561, 721, 514, 748, 633 },
                                   new[] { 1079, 374, 758, 450, 1063, 137, 276 },
                                   new[] { 1051, 108, 552, 744, 883, 525, 955 },
                                   new[] { 189, 173, 910, 1122, 467, 567, 773 }, new[] { 131, 506, 438, 340, 1038, 226 },
                                   new[] { 225, 646, 91, 932, 1087, 710, 174 },
                                   new[] { 93, 705, 1047, 1083, 412, 1061, 12 },
                                   new[] { 263, 970, 1158, 644, 572, 505, 554 }, new[] { 808, 1000, 689, 1054, 718, 578 },
                                   new[] { 850, 1050, 172, 468, 736, 196, 927 },
                                   new[] { 306, 653, 337, 1174, 493, 1130, 116 },
                                   new[] { 210, 68, 200, 844, 988, 267, 228 }, new[] { 725, 423, 713, 943, 144, 156 },
                                   new[] { 217, 1088, 380, 1089, 145, 682, 355 }, new[] { 304, 313, 817, 836, 148 },
                                   new[] { 126, 98, 1092, 34, 663, 2, 657 },
                                   new[] { 1149, 694, 809, 426, 405, 186, 231, 460, 974 },
                                   new[] { 212, 614, 16, 348, 930, 336 }, new[] { 77, 575, 726, 1075, 891, 183, 357, 833 }
                                   , new[] { 35, 507, 626, 66, 931, 753, 218 }, new[] { 983, 54, 771, 330, 78 },
                                   new[] { 508, 308, 143, 115, 494 }, new[] { 33, 908, 740, 139, 1101, 1170, 486, 224 },
                                   new[] { 46, 873, 483, 1039, 756, 789, 1031, 875, 206, 121 }, new[] { 596 },
                                   new[] { 546, 700, 1181, 361, 1084, 365, 1023, 371 },
                                   new[] { 864, 1077, 401, 972, 39, 764, 800, 681 }, new[] { 180, 204, 22, 161, 74 },
                                   new[] { 147, 784, 194, 90, 975 }, new[] { 1119, 26, 114, 152, 238, 945 },
                                   new[] { 235, 191, 901, 1144, 730, 55, 987, 168 },
                                   new[] { 1124, 441, 662, 1036, 246, 1011, 408 }, new[] { 339, 1102, 948, 141, 64 },
                                   new[] { 80, 367, 823, 389, 994, 1037 }, new[] { 437, 1136, 557, 529, 840, 472, 103 },
                                   new[] { 673, 938, 458, 32, 562, 564, 334, 280 },
                                   new[] { 104, 544, 917, 551, 712, 134, 540, 577, 918 },
                                   new[] { 566, 977, 641, 356, 1164, 67 }, new[] { 1184, 980, 1152, 202, 399, 181 },
                                   new[] { 284, 1134, 252, 111, 667, 396 }, new[] { 463, 1017, 140, 289, 838, 802 },
                                   new[] { 430, 639, 455, 387, 247, 737, 135 },
                                   new[] { 866, 1172, 874, 545, 1139, 609, 788, 1110 },
                                   new[] { 287, 346, 1178, 885, 272, 1168, 732 },
                                   new[] { 760, 1034, 177, 830, 317, 278, 265 }, new[] { 323, 668, 1150, 997, 105, 1176 }
                               };
                }
            }
        }

        private class ChapterRandom365 : DailyPlanSchedule
        {
            public override int[][] Schedule
            {
                get
                {
                    return new[]
                               {
                                   new[] { 1134, 382, 817 }, new[] { 912, 723, 351, 2 }, new[] { 262, 623, 906, 183, 190 }
                                   , new[] { 416, 851 }, new[] { 412, 390, 451 }, new[] { 971, 593, 1099 },
                                   new[] { 737, 866, 717, 644 }, new[] { 141, 815, 84, 387 },
                                   new[] { 150, 1117, 246, 1119 }, new[] { 633, 921, 475, 689 }, new[] { 943, 701, 1003 },
                                   new[] { 182, 831 }, new[] { 207, 423, 838 }, new[] { 852, 1176, 720 },
                                   new[] { 951, 1105, 613 }, new[] { 139, 575, 782, 1152 },
                                   new[] { 362, 610, 547, 5, 331 }, new[] { 677, 1160, 500, 1037 }, new[] { 415, 646 },
                                   new[] { 10, 990, 441 }, new[] { 1065, 280, 1131 }, new[] { 514, 528 },
                                   new[] { 973, 409, 505 }, new[] { 760, 1144, 557, 158 }, new[] { 258, 710, 687 },
                                   new[] { 119, 963 }, new[] { 308, 826, 1109 }, new[] { 376, 502, 66, 58 },
                                   new[] { 816, 846, 1007 }, new[] { 818, 132 }, new[] { 92, 285, 1156 },
                                   new[] { 643, 958, 228 }, new[] { 1111, 488, 608, 411, 211 },
                                   new[] { 269, 730, 1135, 957 }, new[] { 134, 862, 199 }, new[] { 1025, 467 },
                                   new[] { 272, 306, 692 }, new[] { 4, 1076 }, new[] { 469, 73, 1163 },
                                   new[] { 811, 1090, 1064, 492, 1020 }, new[] { 364, 429, 800, 274 },
                                   new[] { 1045, 54, 264 }, new[] { 980, 291 }, new[] { 98, 289, 602 },
                                   new[] { 982, 601, 112 }, new[] { 1008, 464, 911 }, new[] { 694, 561, 91, 527, 311 },
                                   new[] { 11, 793, 1110 }, new[] { 33, 452, 147 }, new[] { 765, 277, 65 },
                                   new[] { 732, 953 }, new[] { 700, 798, 174, 884 }, new[] { 563, 661, 874, 988 },
                                   new[] { 1019, 522, 83 }, new[] { 337, 276, 537, 663 }, new[] { 1005, 232, 233 },
                                   new[] { 326, 780, 564 }, new[] { 783, 249, 95 }, new[] { 649, 857, 1035 },
                                   new[] { 303, 14, 1120 }, new[] { 99, 891, 673, 243, 1100 }, new[] { 546, 383, 428, 16 }
                                   , new[] { 797, 196 }, new[] { 721, 752, 684, 121 }, new[] { 470, 466, 408, 619 },
                                   new[] { 263, 37, 753 }, new[] { 146, 1002 }, new[] { 918, 85, 979 },
                                   new[] { 202, 366, 560 }, new[] { 425, 779, 226 }, new[] { 647, 34, 1108, 580 },
                                   new[] { 993, 592, 807 }, new[] { 189, 87, 978 }, new[] { 620, 1000 },
                                   new[] { 630, 248, 640, 414 }, new[] { 449, 984 }, new[] { 236, 1107, 474 },
                                   new[] { 631, 1094, 81 }, new[] { 757, 203, 806, 507 }, new[] { 377, 923, 1147, 1098 },
                                   new[] { 168, 776 }, new[] { 596 }, new[] { 942 }, new[] { 573, 1093, 713, 1145 },
                                   new[] { 568, 1142 }, new[] { 114, 287, 354 }, new[] { 300, 888, 908, 534, 393 },
                                   new[] { 31, 928, 931, 511 }, new[] { 392, 204, 786, 17 }, new[] { 802, 1051, 545 },
                                   new[] { 863, 424 }, new[] { 588, 959, 106, 104 }, new[] { 321, 255 },
                                   new[] { 36, 1027 }, new[] { 738, 909, 181, 1129 }, new[] { 30, 999 },
                                   new[] { 1125, 118, 1014 }, new[] { 875, 1009, 526, 480 }, new[] { 70, 513, 18 },
                                   new[] { 0, 283, 935 }, new[] { 583, 1032 }, new[] { 716, 1104, 743 },
                                   new[] { 96, 850, 896, 212 }, new[] { 343 }, new[] { 678, 22, 1126, 1034 },
                                   new[] { 589, 1184, 125, 234 }, new[] { 247, 600, 941 }, new[] { 742, 820, 1158, 964 },
                                   new[] { 487, 728, 21, 773 }, new[] { 864, 363, 1171, 1149, 374 },
                                   new[] { 458, 278, 129 }, new[] { 314, 1033, 829 }, new[] { 494, 1026, 433 },
                                   new[] { 1, 90, 555 }, new[] { 945, 71 }, new[] { 739, 151, 778, 924 },
                                   new[] { 936, 819 }, new[] { 219, 803, 650 }, new[] { 642, 652, 39 },
                                   new[] { 772, 847, 821 }, new[] { 902, 149 }, new[] { 426, 566, 540 },
                                   new[] { 462, 481, 292, 380 }, new[] { 719, 771, 295, 1086 }, new[] { 296, 529, 1101 },
                                   new[] { 878, 482, 636, 1011, 898 }, new[] { 1061, 985, 498 }, new[] { 761, 842, 394 },
                                   new[] { 77, 516, 1185, 336 }, new[] { 115, 319, 1114 }, new[] { 735, 1141, 361 },
                                   new[] { 843, 533, 805, 1177, 102 }, new[] { 827, 949 }, new[] { 410, 889, 929 },
                                   new[] { 997, 645 }, new[] { 1039, 1092, 398, 698 }, new[] { 420, 330, 666 },
                                   new[] { 154, 565, 165, 381 }, new[] { 876, 834, 490, 57 },
                                   new[] { 1164, 562, 755, 175 }, new[] { 116, 1118, 350, 848 }, new[] { 79, 456 },
                                   new[] { 103, 1058, 856 }, new[] { 1046, 333, 140 }, new[] { 880, 324, 1153, 55 },
                                   new[] { 461, 1146, 315, 625 }, new[] { 496, 237, 215 }, new[] { 1168, 691, 572, 313 },
                                   new[] { 310, 521, 44 }, new[] { 873, 749, 653, 155 }, new[] { 486, 267, 1077 },
                                   new[] { 612, 100, 51 }, new[] { 127, 131 }, new[] { 442, 399, 624, 1130, 895 },
                                   new[] { 195, 886, 413, 110 }, new[] { 934, 43, 294 }, new[] { 845, 950 },
                                   new[] { 883, 28, 162 }, new[] { 1038, 729, 741 }, new[] { 791, 801, 159, 422 },
                                   new[] { 532, 594, 49, 632 }, new[] { 493, 1010, 107, 397 },
                                   new[] { 459, 1074, 510, 265 }, new[] { 1169, 758, 279 }, new[] { 554, 718, 933 },
                                   new[] { 794, 407 }, new[] { 275, 628, 72, 614 }, new[] { 832, 1151, 981 },
                                   new[] { 840, 944 }, new[] { 76, 1167, 977, 900 }, new[] { 436, 148 },
                                   new[] { 297, 1136, 344 }, new[] { 872, 88, 1069, 899 }, new[] { 347, 1181, 715, 914 },
                                   new[] { 160, 538, 447, 520, 1024 }, new[] { 1004 }, new[] { 406, 660, 769 },
                                   new[] { 616, 201 }, new[] { 629, 1112, 983 }, new[] { 214, 512, 208 },
                                   new[] { 1012, 42 }, new[] { 430, 348, 574, 328 }, new[] { 879, 683, 1053 },
                                   new[] { 1157, 598, 1066, 78 }, new[] { 164, 1072, 913 }, new[] { 101, 812, 6, 665 },
                                   new[] { 137, 384, 744 }, new[] { 1079, 887, 472, 504 }, new[] { 804, 453, 240, 1028 },
                                   new[] { 685, 45, 448 }, new[] { 553, 205, 1075 }, new[] { 932, 609, 626, 1182 },
                                   new[] { 94, 706, 690 }, new[] { 955, 662, 251 }, new[] { 1080, 855, 597, 830, 1133 },
                                   new[] { 117, 1137 }, new[] { 61, 1052, 259 }, new[] { 13, 946, 621, 1056 },
                                   new[] { 1123, 708 }, new[] { 29, 611, 634, 969 }, new[] { 346, 229 },
                                   new[] { 890, 298 }, new[] { 446, 477, 128, 1143 }, new[] { 213, 32, 998 },
                                   new[] { 418, 515, 894, 860 }, new[] { 188, 356, 293 }, new[] { 1138, 531, 7, 180 },
                                   new[] { 1018, 1172 }, new[] { 495, 639, 893 }, new[] { 751, 1178, 322 },
                                   new[] { 217, 905, 682, 775 }, new[] { 109, 301, 342 }, new[] { 813, 656, 1041 },
                                   new[] { 675, 939, 252 }, new[] { 1103, 309 }, new[] { 746, 1132, 484, 483, 544 },
                                   new[] { 970, 256 }, new[] { 585, 667, 740, 789, 559, 145 }, new[] { 669, 457, 197 },
                                   new[] { 854, 996 }, new[] { 1166, 506, 299, 284 }, new[] { 919, 327, 46 },
                                   new[] { 869, 579, 581 }, new[] { 253, 938, 1096 }, new[] { 699, 1022, 178, 501 },
                                   new[] { 437, 3, 1173, 439 }, new[] { 922, 27, 225, 839, 686 }, new[] { 455, 774, 421 },
                                   new[] { 1060, 570, 664, 550 }, new[] { 870, 250, 536 }, new[] { 517, 338, 316 },
                                   new[] { 828, 35 }, new[] { 290, 332, 304 }, new[] { 1161, 1062, 153 },
                                   new[] { 241, 231, 590 }, new[] { 1179, 799 }, new[] { 136, 705, 375, 790 },
                                   new[] { 792, 89 }, new[] { 654, 23 }, new[] { 124, 86 }, new[] { 352, 194, 167, 388 },
                                   new[] { 64, 373, 224 }, new[] { 281, 20, 1159, 991 }, new[] { 143, 216 },
                                   new[] { 75, 1106, 372 }, new[] { 334, 176, 762 }, new[] { 617, 489, 24, 438 },
                                   new[] { 785, 318, 657 }, new[] { 584, 499 }, new[] { 1068, 577, 320, 360 },
                                   new[] { 711, 260 }, new[] { 389, 523, 1070, 1030 }, new[] { 1073, 1049, 82 },
                                   new[] { 910, 658, 655 }, new[] { 956, 473, 877 }, new[] { 1036, 1015 },
                                   new[] { 427, 688, 209 }, new[] { 395, 40 }, new[] { 1013, 777, 745 },
                                   new[] { 80, 63, 1188, 542 }, new[] { 325, 239, 697, 627, 365 }, new[] { 638, 26 },
                                   new[] { 270, 966, 1175 }, new[] { 223, 403, 378, 987 }, new[] { 47, 823, 386 },
                                   new[] { 1047, 405, 391 }, new[] { 329, 15, 317, 478, 1127 },
                                   new[] { 759, 558, 1082, 693 }, new[] { 989, 754, 724, 25 }, new[] { 871, 808, 849 },
                                   new[] { 680, 227, 434, 50 }, new[] { 186, 930, 591, 781 },
                                   new[] { 349, 903, 323, 615, 696 }, new[] { 1116, 972, 859, 809, 586 },
                                   new[] { 242, 288 }, new[] { 238, 552, 12, 1054, 897 }, new[] { 218, 836, 485, 796 },
                                   new[] { 595, 795 }, new[] { 1088, 479, 763 }, new[] { 651, 788, 56 },
                                   new[] { 960, 111, 599 }, new[] { 995, 582 }, new[] { 166, 152, 750 },
                                   new[] { 432, 548, 679, 53 }, new[] { 702, 463, 841 }, new[] { 1031, 431, 764 },
                                   new[] { 468, 126, 519 }, new[] { 1187, 965, 254 }, new[] { 19, 497, 541, 948 },
                                   new[] { 179, 1170, 367, 460, 445 }, new[] { 695, 1043, 543, 668 },
                                   new[] { 747, 1085, 123 }, new[] { 142 }, new[] { 471, 261 },
                                   new[] { 551, 1122, 535, 404 }, new[] { 1183, 440 }, new[] { 9, 676, 230 },
                                   new[] { 206, 335, 770, 784 }, new[] { 674, 1089, 133, 712, 302 },
                                   new[] { 307, 1148, 726 }, new[] { 177, 925, 603, 187, 1084, 1150 },
                                   new[] { 435, 992, 69 }, new[] { 707, 476, 358 }, new[] { 266, 1162, 635, 1139 },
                                   new[] { 271, 882, 881, 509, 1063 }, new[] { 569, 443, 97 }, new[] { 1017, 173, 952 },
                                   new[] { 157, 1154, 169 }, new[] { 853, 637, 865 }, new[] { 549, 622, 861, 1048 },
                                   new[] { 704, 144, 359, 530 }, new[] { 641, 1050, 671, 454 }, new[] { 1180, 1006, 670 },
                                   new[] { 539, 1081, 927, 172, 976 }, new[] { 192, 305 }, new[] { 822, 833, 355 },
                                   new[] { 1078, 920, 756, 1001 }, new[] { 837, 916, 401 }, new[] { 967, 108 },
                                   new[] { 1044, 725, 184 }, new[] { 282, 1102, 68 }, new[] { 885, 734, 235, 396 },
                                   new[] { 273, 465, 867, 74 }, new[] { 727, 138 }, new[] { 825, 62, 257, 605 },
                                   new[] { 1023, 858, 339 }, new[] { 38, 1055, 940 }, new[] { 1083, 220, 245 },
                                   new[] { 915, 210, 986 }, new[] { 954, 606, 67 }, new[] { 379, 709, 962 },
                                   new[] { 1040, 444 }, new[] { 571, 171, 120 }, new[] { 135, 1091, 1128 },
                                   new[] { 844, 113, 1021 }, new[] { 221, 731, 93 }, new[] { 341, 904, 733, 357 },
                                   new[] { 59, 917, 1113, 170, 524 }, new[] { 419, 947 }, new[] { 370, 556, 122, 868 },
                                   new[] { 672, 193, 703, 371, 508 }, new[] { 161, 618, 450 }, new[] { 714, 156, 417 },
                                   new[] { 975, 185 }, new[] { 48, 768, 659, 105 }, new[] { 222, 787, 41, 766 },
                                   new[] { 200, 268, 1115 }, new[] { 1124, 402, 130 }, new[] { 1097, 1059, 907, 286 },
                                   new[] { 567, 1165, 578, 937 }, new[] { 1186, 607, 340, 994 }, new[] { 901, 400, 587 },
                                   new[] { 974, 648 }, new[] { 52, 961, 604, 312 }, new[] { 518, 368, 767 },
                                   new[] { 681, 8 }, new[] { 968, 345, 503 }, new[] { 1121, 198, 736, 385, 1087 },
                                   new[] { 1057, 1071, 576, 824 }, new[] { 491, 1174, 810, 369, 163 },
                                   new[] { 1067, 892, 926, 835 }, new[] { 1029, 1155, 722 }, new[] { 244, 191, 748, 814 },
                                   new[] { 60, 1042, 1016 }, new[] { 353, 1140, 1095, 525 }
                               };
                }
            }
        }
        private class ChapterRandom90 : DailyPlanSchedule
        {
            public override int[][] Schedule
            {
                get
                {
                    return new[]
                               {
                                   new[] { 841, 195, 536, 209, 874, 321, 487, 431, 475, 981, 1188, 512, 211 },
                                   new[] { 196, 1092, 990, 961, 650, 344, 683, 306, 144 },
                                   new[] { 214, 548, 922, 312, 885, 824, 70, 272, 865, 177, 371, 384, 946 },
                                   new[] { 497, 401, 47, 488, 141, 805, 511, 198, 62, 725, 857, 655, 580, 799, 747 },
                                   new[] { 84, 458, 1030, 568, 895, 297, 835, 818, 35, 1017, 186, 614 },
                                   new[]
                                       {
                                           1149, 347, 856, 1074, 162, 942, 686, 859, 482, 463, 251, 790, 1130, 671, 25, 576
                                       },
                                   new[] { 581, 894, 15, 612, 615, 991, 193, 996, 1061, 102, 349 },
                                   new[] { 292, 75, 315, 229, 151, 777, 1023, 1116, 1140, 867, 380, 1013, 400, 1049 },
                                   new[] { 323, 999, 1066, 480, 917, 175, 319, 335, 1039, 938, 858, 66, 729, 89 },
                                   new[]
                                       {
                                           684, 710, 1083, 1015, 233, 1126, 1106, 517, 403, 786, 43, 807, 629, 759, 925, 221
                                       },
                                   new[] { 91, 1112, 361, 1008, 753, 709, 781, 364, 718, 911, 964, 1024 },
                                   new[] { 504, 204, 51, 583, 1078, 1047, 240, 679, 0, 1136, 953, 899 },
                                   new[] { 682, 766, 270, 761, 170, 184, 537, 494, 605, 1094, 931, 955, 845, 1103 },
                                   new[] { 231, 843, 415, 407, 164, 941, 1186, 643, 359, 815, 461, 1138, 68 },
                                   new[]
                                       {
                                           1171, 882, 820, 889, 36, 597, 880, 590, 374, 870, 281, 264, 585, 169, 1170, 783,
                                           1072, 697
                                       },
                                   new[] { 23, 665, 1006, 52, 965, 982, 928, 202, 877, 873, 343 },
                                   new[] { 427, 263, 871, 357, 884, 1029, 106, 640, 10, 154, 100, 1124, 943 },
                                   new[] { 560, 887, 521, 383, 1144, 516, 1152, 156, 337, 1004, 793 },
                                   new[]
                                       {
                                           642, 744, 1135, 836, 559, 677, 988, 492, 518, 595, 544, 847, 890, 58, 77, 376,
                                           689, 505
                                       },
                                   new[]
                                       {
                                           1045, 680, 428, 533, 957, 387, 254, 831, 604, 1150, 1119, 1088, 1051, 920, 909,
                                           1022
                                       },
                                   new[] { 97, 354, 493, 556, 443, 346, 462, 1091, 578, 271, 282, 796, 1097, 758 },
                                   new[] { 213, 363, 530, 474, 816, 588, 200, 410, 454, 994, 1063, 956, 863, 923 },
                                   new[] { 3, 237, 212, 375, 4, 525, 173, 496, 42, 929, 587, 600, 146, 1040, 817 },
                                   new[] { 933, 838, 1125, 904, 728, 701, 669, 1187, 178, 549, 902, 402, 451, 901 },
                                   new[] { 78, 236, 949, 64, 73, 279, 201, 646, 694, 205 },
                                   new[] { 289, 944, 506, 206, 951, 418, 876, 768, 862, 161, 1034, 20, 86, 662, 99 },
                                   new[] { 302, 1021, 455, 1054, 287, 844, 757, 830, 453, 968, 851 },
                                   new[] { 1111, 55, 1087, 399, 1044, 54, 314, 760, 1052, 772, 1142, 310, 821 },
                                   new[] { 1033, 932, 67, 8, 633, 586, 852, 1027, 765, 659, 653 },
                                   new[] { 241, 854, 408, 1158, 140, 303, 967, 226, 171, 936, 670, 635, 57 },
                                   new[] { 108, 490, 742, 636, 501, 1081, 256, 569, 970, 705, 779, 1065, 507, 828, 913 },
                                   new[] { 566, 72, 921, 1014, 601, 244, 582, 542, 38, 378, 274, 519, 219 },
                                   new[] { 1059, 126, 785, 675, 2, 649, 111, 332, 716, 850, 881, 592, 95, 1043, 1099 },
                                   new[] { 1095, 985, 284, 806, 110, 789, 190, 327, 737, 442, 329, 139, 239 },
                                   new[] { 300, 6, 699, 275, 934, 656, 345, 65, 770, 734, 88, 980 },
                                   new[] { 225, 800, 133, 749, 326, 1010, 623, 422, 574, 131, 791, 41, 606, 118 },
                                   new[] { 1003, 288, 210, 1137, 1073, 94, 69, 360, 855, 174, 798 },
                                   new[] { 1183, 260, 404, 950, 787, 924, 366, 903, 972, 1108, 348 },
                                   new[] { 750, 1090, 406, 861, 879, 228, 132, 39, 189, 810, 510, 152, 1028, 448, 654 },
                                   new[] { 864, 893, 476, 1067, 983, 185, 1042, 1166, 918, 421, 273, 648, 724 },
                                   new[] { 1129, 1009, 182, 123, 712, 7, 247, 638, 27, 262, 814, 1080, 1160 },
                                   new[] { 822, 607, 1163, 485, 1038, 948, 1141, 49, 316, 935, 34, 1174, 743 },
                                   new[] { 394, 267, 551, 1093, 1182, 11, 839, 547, 483, 12, 208, 498, 352, 564, 180 },
                                   new[] { 819, 261, 104, 562, 398, 1, 33, 452, 827, 692, 1134, 658, 915, 472 },
                                   new[] { 886, 293, 417, 619, 93, 719, 459, 1053, 691, 397, 984, 782 },
                                   new[] { 426, 500, 259, 90, 975, 892, 731, 652, 543, 1184, 1139, 470, 939, 116, 1019 },
                                   new[] { 153, 738, 778, 708, 60, 627, 419, 425, 283, 322, 1172, 860 },
                                   new[] { 995, 567, 1098, 645, 558, 469, 165, 739, 484, 826, 207, 446, 248 },
                                   new[] { 849, 1007, 930, 571, 613, 143, 129, 553, 848, 842, 440, 477, 358 },
                                   new[] { 534, 1101, 1156, 1037, 301, 313, 1181, 309, 328, 388, 245, 439, 435, 660, 727 }
                                   , new[] { 29, 1161, 986, 992, 59, 119, 617, 113, 390, 1076 },
                                   new[] { 618, 674, 14, 112, 235, 333, 714, 608, 369, 503, 21, 163, 218, 657, 199 },
                                   new[] { 1176, 393, 381, 704, 1075, 114, 788, 773, 155, 13, 135, 115 },
                                   new[] { 295, 437, 823, 389, 1113, 98, 1110, 290, 545, 751, 24, 31, 539, 304 },
                                   new[] { 593, 1020, 736, 717, 45, 910, 63, 278, 515, 192, 1167, 1018, 1173, 754, 234 },
                                   new[] { 555, 538, 147, 286, 176, 1082, 527, 40, 832, 998, 223 },
                                   new[] { 46, 28, 1121, 763, 622, 888, 508, 579, 905, 137, 732, 721, 166, 441 },
                                   new[] { 305, 445, 1058, 914, 963, 280, 336, 784, 342, 1105, 158, 666, 44, 330, 875 },
                                   new[] { 846, 997, 947, 735, 220, 1025, 382, 756, 1096, 317, 745, 690, 121, 125 },
                                   new[] { 603, 150, 741, 50, 353, 529, 1026, 1057, 599, 1100, 775, 466, 896, 423 },
                                   new[] { 513, 868, 900, 776, 1107, 746, 1102, 767, 130, 722, 230 },
                                   new[] { 22, 56, 940, 179, 730, 486, 276, 17, 834, 1036, 61, 610 },
                                   new[] { 80, 927, 813, 978, 570, 535, 277, 695, 471, 1084, 467, 764, 216, 249 },
                                   new[] { 457, 987, 148, 438, 869, 1128, 1180, 136, 1165, 878, 405, 489, 1048, 377, 687 }
                                   , new[] { 1154, 637, 74, 473, 681, 456, 436, 663, 1016, 1120, 594, 368, 491, 386 },
                                   new[] { 1148, 1115, 367, 1050, 252, 32, 124, 149, 92, 53, 550, 468 },
                                   new[] { 554, 465, 664, 191, 634, 294, 673, 1162, 9, 977, 246, 298 },
                                   new[]
                                       {
                                           48, 524, 520, 320, 311, 561, 720, 802, 908, 713, 897, 362, 626, 265, 661, 183,
                                           188
                                       },
                                   new[] { 145, 540, 331, 809, 1079, 107, 926, 117, 409, 602, 1177, 291 },
                                   new[] { 715, 217, 450, 1068, 105, 81, 16, 222, 1070, 307, 651, 396 },
                                   new[]
                                       {
                                           478, 355, 698, 577, 825, 621, 1085, 771, 71, 167, 232, 318, 1064, 1117, 134, 573,
                                           993
                                       },
                                   new[] { 672, 644, 308, 215, 385, 563, 514, 1086, 269, 1133, 639, 528, 268 },
                                   new[] { 370, 979, 1002, 733, 324, 958, 700, 883, 1185, 120 },
                                   new[] { 954, 696, 703, 356, 755, 96, 391, 460, 740, 1056, 509, 723, 726, 620, 1104 },
                                   new[] { 837, 1157, 464, 522, 711, 780, 351, 532, 794, 541, 1155, 434, 795 },
                                   new[] { 919, 898, 172, 341, 444, 416, 960, 414, 253, 969, 5, 138 },
                                   new[] { 1011, 142, 1143, 85, 76, 945, 433, 1131, 565, 258, 907, 916 },
                                   new[] { 255, 285, 552, 959, 128, 1001, 334, 803, 242, 411, 631, 801, 676, 616 },
                                   new[] { 688, 168, 1035, 769, 103, 266, 379, 811, 1041, 338, 1153, 693 },
                                   new[]
                                       {
                                           808, 912, 1077, 706, 203, 557, 1118, 1169, 989, 109, 611, 1005, 1175, 373, 227,
                                           392
                                       },
                                   new[] { 974, 1060, 495, 325, 797, 1109, 853, 238, 37, 1178, 840 },
                                   new[] { 598, 774, 197, 1123, 122, 952, 296, 350, 584, 159, 160, 424 },
                                   new[] { 79, 83, 432, 479, 499, 420, 30, 531, 966, 891, 87, 1127, 1145 },
                                   new[]
                                       { 1179, 181, 1031, 101, 447, 1046, 906, 647, 667, 829, 243, 413, 1146, 1071, 1089 }
                                   , new[] { 707, 257, 26, 502, 976, 412, 1151, 526, 762, 1055, 224, 187 },
                                   new[] { 962, 372, 430, 1168, 1062, 628, 1069, 1147, 1164, 1032, 630, 641 },
                                   new[] { 678, 1159, 866, 1114, 624, 82, 429, 752, 632, 1012, 937, 299, 127, 18, 591 },
                                   new[] { 365, 589, 19, 973, 748, 1122, 625, 971, 395, 668, 339 },
                                   new[] { 340, 872, 250, 596, 1000, 523, 575, 157 },
                                   new[] { 546, 449, 804, 481, 572, 609, 685, 194, 833, 812, 792, 1132, 702 }
                               };
                }
            }
        }
        private class Chronologically180 : DailyPlanSchedule
        {
            public override int[][] Schedule
            {
                get
                {
                    return new[]
                               {
                                   new[] { 0, 1, 2, 3, 4, 5, 6 }, new[] { 7, 8, 9, 10, 436, 437, 438 },
                                   new[] { 439, 440, 441, 442, 443, 444 }, new[] { 445, 446, 447, 448, 449, 450, 451 },
                                   new[] { 452, 453, 454, 455, 456, 457, 458 },
                                   new[] { 459, 460, 461, 462, 463, 464, 465, 466 },
                                   new[] { 467, 468, 469, 470, 471, 472 }, new[] { 473, 474, 475, 476, 477, 11 },
                                   new[] { 12, 13, 14, 15, 16, 17, 18 }, new[] { 19, 20, 21, 22, 23 },
                                   new[] { 24, 25, 26, 27, 28 }, new[] { 29, 30, 31, 32, 33 },
                                   new[] { 34, 35, 36, 37, 38 }, new[] { 39, 40, 41, 42, 43 },
                                   new[] { 44, 45, 46, 47, 48, 49 }, new[] { 50, 51, 52, 53, 54, 55, 56 },
                                   new[] { 57, 58, 59, 60, 61 }, new[] { 62, 63, 64, 65, 66, 67, 68 },
                                   new[] { 69, 70, 71, 72, 73, 74 }, new[] { 75, 76, 77, 78 },
                                   new[] { 79, 80, 81, 82, 83, 84 }, new[] { 85, 86, 87, 88, 89 },
                                   new[] { 90, 91, 92, 93, 94, 95, 96 }, new[] { 97, 98, 99, 100, 101, 102 },
                                   new[] { 103, 104, 105, 106 }, new[] { 107, 108, 109, 110, 111, 112 },
                                   new[] { 113, 114, 115, 116 }, new[] { 117, 118, 119, 120 }, new[] { 121, 122, 123 },
                                   new[] { 124, 125, 126, 127, 128, 129 }, new[] { 130, 131, 567, 132, 133, 134 },
                                   new[] { 135, 136, 137, 138, 139 }, new[] { 140, 141, 142, 143, 144 },
                                   new[] { 145, 146, 147, 148, 149 }, new[] { 150, 151, 152, 153, 154 },
                                   new[] { 155, 156, 157, 158, 159 }, new[] { 160, 161, 162, 163, 164, 165, 166 },
                                   new[] { 167, 168, 169, 170, 171, 172, 173 },
                                   new[] { 174, 175, 176, 177, 178, 179, 180 }, new[] { 181, 182, 183, 184, 185 },
                                   new[] { 186, 568, 187, 188, 189, 190, 191, 192 },
                                   new[] { 193, 194, 195, 196, 197, 198 }, new[] { 199, 200, 201, 202, 203, 204 },
                                   new[] { 205, 206, 207, 208, 209, 210 }, new[] { 211, 212, 213, 214, 215, 216 },
                                   new[] { 217, 218, 219, 220, 221 }, new[] { 222, 223, 224, 225, 226, 227, 228 },
                                   new[] { 229, 230, 231, 232, 233, 234 },
                                   new[] { 235, 236, 237, 238, 239, 240, 241, 242 },
                                   new[] { 243, 244, 245, 246, 247, 248, 249 }, new[] { 250, 251, 252, 253 },
                                   new[] { 254, 255, 488, 536, 256, 257, 258, 259 },
                                   new[] { 484, 504, 508, 511, 529, 533, 597, 617, 618, 619, 260 },
                                   new[] { 261, 262, 494, 512, 531, 540, 263, 264, 265 },
                                   new[] { 266, 495, 598, 600, 601, 602, 605, 606, 607, 267, 268 },
                                   new[] { 269, 270, 483, 485, 486, 487, 491, 493, 496, 498, 338 },
                                   new[] { 339, 520, 521, 522, 526, 561 }, new[] { 562, 564, 340, 341, 342, 550, 554 },
                                   new[] { 555, 343, 558, 565 }, new[] { 569, 570, 344, 345, 346, 347, 579 },
                                   new[] { 580, 581, 271, 348, 349 }, new[] { 610, 583, 584, 272, 350, 351, 352 },
                                   new[] { 353, 478, 479, 492, 499, 500, 501, 524, 545 },
                                   new[] { 566, 573, 577, 578, 582, 609, 273 },
                                   new[] { 354, 502, 506, 510, 513, 516, 274, 275, 355, 527, 530 },
                                   new[] { 537, 552, 276, 356, 497, 542, 543, 544, 546, 547, 277 },
                                   new[] { 278, 357, 509, 528, 563, 599, 279, 280 },
                                   new[] { 281, 480, 481, 489, 490, 505, 532, 282, 283, 284 },
                                   new[] { 503, 517, 535, 538, 539, 541, 285, 286, 287 },
                                   new[] { 482, 515, 518, 519, 288, 289, 534, 572 },
                                   new[] { 574, 575, 576, 290, 358, 359, 507, 585, 586, 587 },
                                   new[] { 360, 361, 362, 608, 615, 616, 620, 621, 622 },
                                   new[] { 363, 364, 365, 366, 604, 588, 589, 590, 591, 592 },
                                   new[] { 593, 594, 595, 291, 292, 514 }, new[] { 548, 571, 293, 294, 367, 549 },
                                   new[] { 596 }, new[] { 671, 672, 673, 674, 675, 676, 677, 678, 628, 629 },
                                   new[] { 630, 631, 632, 633, 634, 635 }, new[] { 636, 637, 638, 639, 640, 641 },
                                   new[] { 642, 643, 644, 645, 646, 647 }, new[] { 648, 649, 650, 651, 295, 296 },
                                   new[] { 368, 369, 297, 370, 298 },
                                   new[] { 371, 372, 373, 613, 611, 623, 624, 625, 626 },
                                   new[] { 627, 299, 374, 652, 653, 654, 655 },
                                   new[] { 656, 659, 660, 661, 662, 663, 664, 665, 666 },
                                   new[] { 667, 668, 669, 670, 300, 301, 375 }, new[] { 657, 658, 302, 303, 304, 376 },
                                   new[] { 377, 378, 305, 379, 380, 381, 382, 306 }, new[] { 383, 307, 308, 309, 310 },
                                   new[] { 311, 312, 384, 385, 386, 387 },
                                   new[] { 388, 389, 888, 559, 560, 313, 314, 315, 316 },
                                   new[] { 317, 318, 319, 320, 321 }, new[] { 322, 323, 324, 325, 390, 326, 391 },
                                   new[] { 889, 890, 891, 892, 327, 392, 679, 680 },
                                   new[] { 681, 682, 683, 684, 685, 686, 879, 880, 881 },
                                   new[] { 882, 883, 884, 885, 886, 887, 393, 687, 688, 689 },
                                   new[] { 690, 893, 894, 895, 896, 897, 898, 899, 394, 328 },
                                   new[] { 329, 691, 692, 693, 694, 695, 696, 697, 698, 699 },
                                   new[] { 700, 701, 702, 703, 704, 705, 395, 396 },
                                   new[] { 397, 525, 862, 863, 864, 865, 866, 867, 868, 869, 870 },
                                   new[] { 871, 872, 873, 874, 875, 706, 707, 708, 709, 710 },
                                   new[] { 711, 712, 713, 714, 715, 716, 717, 553, 718 },
                                   new[] { 719, 720, 721, 722, 723, 724 },
                                   new[] { 725, 726, 330, 331, 523, 557, 612, 727 },
                                   new[] { 728, 729, 730, 731, 732, 733, 734, 735, 736, 737 },
                                   new[] { 738, 739, 740, 741, 742, 743, 744, 332, 333 },
                                   new[] { 398, 399, 900, 901, 902, 334, 335, 400 },
                                   new[] { 401, 906, 907, 908, 745, 746, 747 }, new[] { 748, 749, 750, 751, 752, 753 },
                                   new[] { 754, 755, 756, 757, 758, 759, 760 },
                                   new[] { 761, 762, 763, 764, 765, 766, 767, 768 },
                                   new[] { 769, 770, 771, 772, 773, 774, 775 }, new[] { 776, 777, 778, 779, 780, 781 },
                                   new[] { 782, 783, 784, 551, 556, 336, 337, 402 },
                                   new[] { 903, 904, 905, 785, 786, 787, 788, 789, 790 },
                                   new[] { 791, 792, 793, 794, 795 }, new[] { 796, 797, 798, 799 },
                                   new[] { 800, 801, 802, 803, 804, 805, 806, 807 },
                                   new[] { 808, 809, 810, 811, 812, 813, 814, 815, 816 },
                                   new[] { 817, 818, 819, 820, 821 }, new[] { 822, 823, 824, 825, 826 },
                                   new[] { 827, 828, 829, 830, 831, 832, 833 }, new[] { 834, 835, 836, 837, 838, 839 },
                                   new[] { 840, 841, 842, 843, 844, 845 }, new[] { 846, 847, 848, 849, 876, 877 },
                                   new[] { 878, 850, 851, 852, 853, 854 }, new[] { 855, 856, 857, 858, 859, 860 },
                                   new[] { 861, 403, 404, 405, 406, 407, 408 },
                                   new[] { 614, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918 },
                                   new[] { 919, 920, 921, 922, 923, 924, 426, 427, 428, 429 },
                                   new[] { 430, 431, 432, 433, 434, 435, 409, 410, 411 },
                                   new[] { 412, 413, 414, 415, 416, 417, 418 }, new[] { 419, 420, 421, 422 },
                                   new[] { 423, 424, 425, 603, 925, 926, 927, 928 }, new[] { 973, 929, 974, 930 },
                                   new[] { 931, 957, 975, 932, 976 }, new[] { 977, 997, 998, 999, 1000 },
                                   new[] { 958, 1001, 959, 978 }, new[] { 933, 934, 935, 979 },
                                   new[] { 939, 940, 983, 941 }, new[] { 980, 936, 960, 961 },
                                   new[] { 937, 938, 942, 962 }, new[] { 1002, 943, 963 },
                                   new[] { 944, 964, 981, 945, 965 }, new[] { 946, 1003, 1004 },
                                   new[] { 1005, 1006, 982, 984 }, new[] { 985, 986, 987, 988, 1007 },
                                   new[] { 989, 947, 966, 948 }, new[] { 949, 990, 991, 967 },
                                   new[] { 1008, 950, 968, 951 }, new[] { 992, 993, 969, 952 }, new[] { 953, 954, 970 },
                                   new[] { 994, 1009, 1010 }, new[] { 1011, 1012, 1013, 955, 971 },
                                   new[] { 995, 1014, 1015, 956 }, new[] { 972, 996, 1016, 1017, 1018 },
                                   new[] { 1019, 1020, 1021, 1022, 1023 }, new[] { 1024, 1025, 1026, 1027 },
                                   new[] { 1028, 1029, 1030, 1031, 1146 },
                                   new[] { 1147, 1148, 1149, 1150, 1032, 1033, 1091 },
                                   new[] { 1092, 1093, 1094, 1095, 1096, 1034 },
                                   new[] { 1035, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118 },
                                   new[] { 1036, 1062, 1063, 1064, 1065, 1066, 1067, 1068 },
                                   new[] { 1069, 1070, 1071, 1072, 1073, 1074 },
                                   new[] { 1075, 1076, 1077, 1078, 1079, 1080 },
                                   new[] { 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088 },
                                   new[] { 1089, 1090, 1046, 1047, 1048, 1049, 1050 },
                                   new[] { 1051, 1052, 1053, 1054, 1055, 1056 },
                                   new[] { 1057, 1058, 1059, 1060, 1061, 1037, 1038 },
                                   new[] { 1039, 1040, 1041, 1042, 1043 }, new[] { 1044, 1045, 1107, 1108, 1109, 1110 },
                                   new[] { 1132, 1097, 1098, 1099, 1100, 1101, 1102 },
                                   new[] { 1103, 1104, 1105, 1106, 1119, 1120, 1121, 1122 },
                                   new[] { 1123, 1124, 1129, 1130, 1131, 1151, 1152, 1153 },
                                   new[] { 1154, 1155, 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140 },
                                   new[] { 1141, 1142, 1143, 1144, 1145, 1125 },
                                   new[] { 1126, 1127, 1128, 1156, 1157, 1158, 1166, 1159 },
                                   new[] { 1160, 1161, 1162, 1163, 1164, 1165, 1167, 1168, 1169 },
                                   new[] { 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179 },
                                   new[] { 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188 }
                               };
                }
            }
        }
        private class Chronologically365 : DailyPlanSchedule
        {
            public override int[][] Schedule
            {
                get
                {
                    return new[]
                               {
                                   new[] { 0, 1, 2 }, new[] { 3, 4, 5, 6 }, new[] { 7, 8, 9 }, new[] { 10, 436, 437 },
                                   new[] { 438, 439, 440, 441 }, new[] { 442, 443, 444 }, new[] { 445, 446, 447, 448 },
                                   new[] { 449, 450, 451 }, new[] { 452, 453, 454, 455 }, new[] { 456, 457 },
                                   new[] { 458, 459, 460, 461, 462 }, new[] { 463, 464, 465 }, new[] { 466, 467, 468 },
                                   new[] { 469, 470, 471 }, new[] { 472, 473, 474 }, new[] { 475, 476, 477 },
                                   new[] { 11, 12, 13, 14 }, new[] { 15, 16, 17 }, new[] { 18, 19, 20 },
                                   new[] { 21, 22, 23 }, new[] { 24, 25 }, new[] { 26, 27 }, new[] { 28, 29 },
                                   new[] { 30, 31, 32 }, new[] { 33, 34, 35 }, new[] { 36, 37 }, new[] { 38, 39, 40 },
                                   new[] { 41, 42 }, new[] { 43, 44, 45 }, new[] { 46, 47, 48 }, new[] { 49, 50, 51 },
                                   new[] { 52, 53, 54 }, new[] { 55, 56, 57 }, new[] { 58, 59, 60 }, new[] { 61, 62, 63 },
                                   new[] { 64, 65, 66 }, new[] { 67, 68, 69 }, new[] { 70, 71, 72 }, new[] { 73, 74, 75 },
                                   new[] { 76, 77 }, new[] { 78, 79 }, new[] { 80, 81, 82, 83 }, new[] { 84, 85 },
                                   new[] { 86, 87 }, new[] { 88, 89, 90 }, new[] { 91, 92, 93, 94 }, new[] { 95, 96, 97 },
                                   new[] { 98, 99, 100 }, new[] { 101, 102 }, new[] { 103, 104 }, new[] { 105, 106, 107 },
                                   new[] { 108, 109, 110 }, new[] { 111, 112 }, new[] { 113, 114 }, new[] { 115, 116 },
                                   new[] { 117, 118 }, new[] { 119, 120 }, new[] { 121, 122 }, new[] { 123, 124 },
                                   new[] { 125, 126, 127 }, new[] { 128, 129, 130 }, new[] { 131, 567 },
                                   new[] { 132, 133, 134 }, new[] { 135, 136, 137 }, new[] { 138, 139 },
                                   new[] { 140, 141, 142 }, new[] { 143, 144 }, new[] { 145, 146, 147 },
                                   new[] { 148, 149 }, new[] { 150, 151 }, new[] { 152, 153, 154 }, new[] { 155, 156 },
                                   new[] { 157, 158, 159 }, new[] { 160, 161, 162 }, new[] { 163, 164, 165, 166 },
                                   new[] { 167, 168, 169 }, new[] { 170, 171, 172, 173 }, new[] { 174, 175, 176, 177 },
                                   new[] { 178, 179, 180 }, new[] { 181, 182 }, new[] { 183, 184 },
                                   new[] { 185, 186, 568, 187, 188 }, new[] { 189, 190, 191, 192 },
                                   new[] { 193, 194, 195 }, new[] { 196, 197, 198 }, new[] { 199, 200, 201 },
                                   new[] { 202, 203, 204 }, new[] { 205, 206 }, new[] { 207, 208, 209 },
                                   new[] { 210, 211, 212 }, new[] { 213, 214, 215 }, new[] { 216, 217, 218 },
                                   new[] { 219, 220 }, new[] { 221, 222, 223 }, new[] { 224, 225, 226, 227 },
                                   new[] { 228, 229, 230 }, new[] { 231, 232, 233 }, new[] { 234, 235, 236 },
                                   new[] { 237, 238, 239, 240 }, new[] { 241, 242, 243, 244 },
                                   new[] { 245, 246, 247, 248 }, new[] { 249, 250 }, new[] { 251, 252 },
                                   new[] { 253, 254, 255 }, new[] { 488, 536, 256, 257 },
                                   new[] { 258, 259, 484, 504, 508 }, new[] { 511, 529, 533, 597, 617, 618 },
                                   new[] { 619, 260, 261, 262 }, new[] { 494, 512, 531, 540, 263 },
                                   new[] { 264, 265, 266, 495 }, new[] { 598, 600, 601, 602, 605, 606, 607, 267 },
                                   new[] { 268, 269 }, new[] { 270, 483, 485, 486, 487, 491, 493 },
                                   new[] { 496, 498, 338 }, new[] { 339, 520, 521 },
                                   new[] { 522, 526, 561, 562, 564, 340 }, new[] { 341, 342, 550 }, new[] { 554, 555 },
                                   new[] { 343 }, new[] { 558, 565, 569, 570 }, new[] { 344, 345, 346 },
                                   new[] { 347, 579, 580 }, new[] { 581, 271, 348 }, new[] { 349, 610 },
                                   new[] { 583, 584, 272 }, new[] { 350, 351, 352 }, new[] { 353, 478, 479, 492, 499 },
                                   new[] { 500, 501, 524, 545, 566 }, new[] { 573, 577, 578, 582 },
                                   new[] { 609, 273, 354 }, new[] { 502, 506, 510, 513, 516 },
                                   new[] { 274, 275, 355, 527, 530, 537 }, new[] { 552, 276, 356, 497, 542, 543 },
                                   new[] { 544, 546, 547, 277 }, new[] { 278, 357, 509, 528, 563, 599 },
                                   new[] { 279, 280 }, new[] { 281, 480, 481, 489, 490, 505, 532 },
                                   new[] { 282, 283, 284 }, new[] { 503, 517, 535, 538, 539, 541 },
                                   new[] { 285, 286, 287, 482 }, new[] { 515, 518, 519, 288 },
                                   new[] { 289, 534, 572, 574 }, new[] { 575, 576, 290, 358 },
                                   new[] { 359, 507, 585, 586, 587 }, new[] { 360, 361, 362 },
                                   new[] { 608, 615, 616, 620, 621, 622 }, new[] { 363, 364, 365 },
                                   new[] { 366, 604, 588, 589, 590, 591, 592 }, new[] { 593, 594, 595, 291 },
                                   new[] { 292, 514 }, new[] { 548, 571, 293 }, new[] { 294, 367, 549 }, new[] { 596 },
                                   new[] { 671 }, new[] { 672, 673, 674, 675 }, new[] { 676, 677, 678, 628, 629 },
                                   new[] { 630, 631, 632 }, new[] { 633, 634, 635 }, new[] { 636, 637, 638 },
                                   new[] { 639, 640, 641 }, new[] { 642, 643 }, new[] { 644, 645, 646 },
                                   new[] { 647, 648, 649 }, new[] { 650, 651, 295 }, new[] { 296, 368, 369 },
                                   new[] { 297, 370, 298 }, new[] { 371, 372 }, new[] { 373, 613, 611, 623, 624 },
                                   new[] { 625, 626, 627, 299, 374 }, new[] { 652, 653, 654 },
                                   new[] { 655, 656, 659, 660 }, new[] { 661, 662, 663, 664 },
                                   new[] { 665, 666, 667, 668, 669 }, new[] { 670, 300, 301 }, new[] { 375, 657, 658 },
                                   new[] { 302, 303 }, new[] { 304, 376, 377, 378 }, new[] { 305, 379, 380, 381 },
                                   new[] { 382, 306, 383, 307 }, new[] { 308, 309 }, new[] { 310, 311, 312 },
                                   new[] { 384, 385 }, new[] { 386, 387, 388, 389 }, new[] { 888, 559, 560, 313, 314 },
                                   new[] { 315, 316, 317 }, new[] { 318, 319, 320 }, new[] { 321, 322 },
                                   new[] { 323, 324, 325, 390 }, new[] { 326, 391, 889, 890 },
                                   new[] { 891, 892, 327, 392 }, new[] { 679, 680, 681, 682 },
                                   new[] { 683, 684, 685, 686 }, new[] { 879, 880, 881, 882, 883 },
                                   new[] { 884, 885, 886, 887, 393, 687 }, new[] { 688, 689, 690, 893 },
                                   new[] { 894, 895, 896, 897, 898, 899 }, new[] { 394, 328, 329 },
                                   new[] { 691, 692, 693, 694 }, new[] { 695, 696, 697, 698, 699, 700 },
                                   new[] { 701, 702, 703, 704 }, new[] { 705, 395, 396, 397 },
                                   new[] { 525, 862, 863, 864, 865, 866 }, new[] { 867, 868, 869, 870, 871 },
                                   new[] { 872, 873, 874, 875, 706, 707 }, new[] { 708, 709, 710 },
                                   new[] { 711, 712, 713, 714, 715 }, new[] { 716, 717, 553, 718 },
                                   new[] { 719, 720, 721 }, new[] { 722, 723, 724, 725 }, new[] { 726, 330, 331 },
                                   new[] { 523, 557, 612, 727 }, new[] { 728, 729, 730, 731, 732, 733 },
                                   new[] { 734, 735, 736, 737, 738 }, new[] { 739, 740, 741, 742, 743 },
                                   new[] { 744, 332, 333 }, new[] { 398, 399, 900, 901, 902 }, new[] { 334, 335, 400 },
                                   new[] { 401, 906, 907, 908 }, new[] { 745, 746, 747 }, new[] { 748, 749, 750 },
                                   new[] { 751, 752, 753 }, new[] { 754, 755, 756, 757 }, new[] { 758, 759, 760 },
                                   new[] { 761, 762, 763, 764, 765 }, new[] { 766, 767, 768 }, new[] { 769, 770, 771 },
                                   new[] { 772, 773, 774 }, new[] { 775, 776, 777 }, new[] { 778, 779, 780 },
                                   new[] { 781, 782, 783, 784 }, new[] { 551, 556, 336, 337 },
                                   new[] { 402, 903, 904, 905 }, new[] { 785, 786, 787, 788, 789 },
                                   new[] { 790, 791, 792 }, new[] { 793, 794 }, new[] { 795, 796 },
                                   new[] { 797, 798, 799 }, new[] { 800, 801, 802 }, new[] { 803, 804, 805, 806 },
                                   new[] { 807, 808, 809, 810, 811 }, new[] { 812, 813, 814 }, new[] { 815, 816, 817 },
                                   new[] { 818, 819, 820 }, new[] { 821, 822 }, new[] { 823, 824, 825 },
                                   new[] { 826, 827, 828 }, new[] { 829, 830, 831, 832 }, new[] { 833, 834, 835 },
                                   new[] { 836, 837, 838 }, new[] { 839, 840, 841 }, new[] { 842, 843, 844 },
                                   new[] { 845, 846, 847 }, new[] { 848, 849, 876 }, new[] { 877, 878, 850 },
                                   new[] { 851, 852, 853 }, new[] { 854, 855 }, new[] { 856, 857, 858 },
                                   new[] { 859, 860, 861, 403 }, new[] { 404, 405 }, new[] { 406, 407, 408, 614, 909 },
                                   new[] { 910, 911, 912, 913, 914, 915 }, new[] { 916, 917, 918, 919, 920 },
                                   new[] { 921, 922, 923, 924, 426 }, new[] { 427, 428, 429, 430, 431, 432 },
                                   new[] { 433, 434, 435, 409 }, new[] { 410, 411, 412 }, new[] { 413, 414, 415, 416 },
                                   new[] { 417, 418, 419 }, new[] { 420, 421 }, new[] { 422, 423 },
                                   new[] { 424, 425, 603 }, new[] { 925, 926, 927, 928, 973 }, new[] { 929 },
                                   new[] { 974, 930, 931 }, new[] { 957, 975 }, new[] { 932, 976, 977 },
                                   new[] { 997, 998 }, new[] { 999, 1000 }, new[] { 958, 1001 }, new[] { 959, 978 },
                                   new[] { 933, 934 }, new[] { 935, 979, 939 }, new[] { 940 }, new[] { 983, 941 },
                                   new[] { 980, 936 }, new[] { 960, 961 }, new[] { 937, 938 }, new[] { 942, 962 },
                                   new[] { 1002 }, new[] { 943, 963 }, new[] { 944, 964, 981 }, new[] { 945, 965 },
                                   new[] { 946, 1003 }, new[] { 1004 }, new[] { 1005, 1006 }, new[] { 982, 984 },
                                   new[] { 985, 986 }, new[] { 987, 988, 1007 }, new[] { 989, 947 }, new[] { 966, 948 },
                                   new[] { 949, 990 }, new[] { 991, 967 }, new[] { 1008, 950 }, new[] { 968 },
                                   new[] { 951, 992 }, new[] { 993, 969, 952 }, new[] { 953 }, new[] { 954 },
                                   new[] { 970, 994 }, new[] { 1009 }, new[] { 1010, 1011, 1012 }, new[] { 1013, 955 },
                                   new[] { 971, 995 }, new[] { 1014, 1015 }, new[] { 956, 972, 996 }, new[] { 1016, 1017 }
                                   , new[] { 1018, 1019, 1020 }, new[] { 1021, 1022 }, new[] { 1023, 1024 },
                                   new[] { 1025, 1026 }, new[] { 1027, 1028, 1029 }, new[] { 1030, 1031 },
                                   new[] { 1146, 1147, 1148, 1149 }, new[] { 1150, 1032, 1033 },
                                   new[] { 1091, 1092, 1093 }, new[] { 1094, 1095, 1096 },
                                   new[] { 1034, 1035, 1111, 1112 }, new[] { 1113, 1114, 1115, 1116 },
                                   new[] { 1117, 1118, 1036, 1062 }, new[] { 1063, 1064, 1065, 1066 },
                                   new[] { 1067, 1068, 1069 }, new[] { 1070, 1071, 1072 }, new[] { 1073, 1074, 1075 },
                                   new[] { 1076, 1077 }, new[] { 1078, 1079, 1080, 1081, 1082 },
                                   new[] { 1083, 1084, 1085, 1086 }, new[] { 1087, 1088, 1089, 1090 },
                                   new[] { 1046, 1047, 1048 }, new[] { 1049, 1050, 1051, 1052 }, new[] { 1053, 1054 },
                                   new[] { 1055, 1056, 1057, 1058 }, new[] { 1059, 1060, 1061 }, new[] { 1037, 1038 },
                                   new[] { 1039, 1040, 1041 }, new[] { 1042, 1043, 1044 }, new[] { 1045, 1107 },
                                   new[] { 1108, 1109, 1110, 1132 }, new[] { 1097, 1098, 1099, 1100 },
                                   new[] { 1101, 1102, 1103 }, new[] { 1104, 1105, 1106 },
                                   new[] { 1119, 1120, 1121, 1122, 1123 }, new[] { 1124, 1129, 1130, 1131 },
                                   new[] { 1151, 1152, 1153, 1154 }, new[] { 1155, 1133, 1134, 1135, 1136 },
                                   new[] { 1137, 1138, 1139, 1140, 1141 }, new[] { 1142, 1143 },
                                   new[] { 1144, 1145, 1125 }, new[] { 1126, 1127, 1128, 1156 },
                                   new[] { 1157, 1158, 1166, 1159, 1160 }, new[] { 1161, 1162, 1163, 1164 },
                                   new[] { 1165, 1167, 1168, 1169 }, new[] { 1170, 1171, 1172, 1173, 1174 },
                                   new[] { 1175, 1176, 1177, 1178, 1179 }, new[] { 1180, 1181, 1182, 1183, 1184 },
                                   new[] { 1185, 1186, 1187, 1188 }
                               };
                }
            }
        }

        private class Chronologically90 : DailyPlanSchedule
        {
            public override int[][] Schedule
            {
                get
                {
                    return new[]
                               {
                                   new[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 436, 437, 438 },
                                   new[] { 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451 },
                                   new[] { 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466 },
                                   new[] { 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 11 },
                                   new[] { 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23 },
                                   new[] { 24, 25, 26, 27, 28, 29, 30, 31, 32, 33 },
                                   new[] { 34, 35, 36, 37, 38, 39, 40, 41, 42, 43 },
                                   new[] { 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56 },
                                   new[] { 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68 },
                                   new[] { 69, 70, 71, 72, 73, 74, 75, 76, 77, 78 },
                                   new[] { 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89 },
                                   new[] { 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102 },
                                   new[] { 103, 104, 105, 106, 107, 108, 109, 110, 111, 112 },
                                   new[] { 113, 114, 115, 116, 117, 118, 119, 120 },
                                   new[] { 121, 122, 123, 124, 125, 126, 127, 128, 129 },
                                   new[] { 130, 131, 567, 132, 133, 134, 135, 136, 137, 138, 139 },
                                   new[] { 140, 141, 142, 143, 144, 145, 146, 147, 148, 149 },
                                   new[] { 150, 151, 152, 153, 154, 155, 156, 157, 158, 159 },
                                   new[] { 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173 },
                                   new[] { 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185 },
                                   new[] { 186, 568, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198 },
                                   new[] { 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210 },
                                   new[] { 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221 },
                                   new[] { 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234 },
                                   new[] { 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249 },
                                   new[] { 250, 251, 252, 253, 254, 255, 488, 536, 256, 257, 258, 259 },
                                   new[]
                                       {
                                           484, 504, 508, 511, 529, 533, 597, 617, 618, 619, 260, 261, 262, 494, 512, 531,
                                           540, 263, 264, 265
                                       },
                                   new[]
                                       {
                                           266, 495, 598, 600, 601, 602, 605, 606, 607, 267, 268, 269, 270, 483, 485, 486,
                                           487, 491, 493, 496, 498, 338
                                       },
                                   new[] { 339, 520, 521, 522, 526, 561, 562, 564, 340, 341, 342, 550, 554 },
                                   new[] { 555, 343, 558, 565, 569, 570, 344, 345, 346, 347, 579 },
                                   new[] { 580, 581, 271, 348, 349, 610, 583, 584, 272, 350, 351, 352 },
                                   new[]
                                       { 353, 478, 479, 492, 499, 500, 501, 524, 545, 566, 573, 577, 578, 582, 609, 273 },
                                   new[]
                                       {
                                           354, 502, 506, 510, 513, 516, 274, 275, 355, 527, 530, 537, 552, 276, 356, 497,
                                           542, 543, 544, 546, 547, 277
                                       },
                                   new[]
                                       {
                                           278, 357, 509, 528, 563, 599, 279, 280, 281, 480, 481, 489, 490, 505, 532, 282,
                                           283, 284
                                       },
                                   new[]
                                       {
                                           503, 517, 535, 538, 539, 541, 285, 286, 287, 482, 515, 518, 519, 288, 289, 534,
                                           572
                                       },
                                   new[]
                                       {
                                           574, 575, 576, 290, 358, 359, 507, 585, 586, 587, 360, 361, 362, 608, 615, 616,
                                           620, 621, 622
                                       },
                                   new[]
                                       { 363, 364, 365, 366, 604, 588, 589, 590, 591, 592, 593, 594, 595, 291, 292, 514 },
                                   new[] { 548, 571, 293, 294, 367, 549, 596 },
                                   new[]
                                       { 671, 672, 673, 674, 675, 676, 677, 678, 628, 629, 630, 631, 632, 633, 634, 635 },
                                   new[] { 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647 },
                                   new[] { 648, 649, 650, 651, 295, 296, 368, 369, 297, 370, 298 },
                                   new[]
                                       { 371, 372, 373, 613, 611, 623, 624, 625, 626, 627, 299, 374, 652, 653, 654, 655 },
                                   new[]
                                       { 656, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 300, 301, 375 },
                                   new[] { 657, 658, 302, 303, 304, 376, 377, 378, 305, 379, 380, 381, 382, 306 },
                                   new[] { 383, 307, 308, 309, 310, 311, 312, 384, 385, 386, 387 },
                                   new[] { 388, 389, 888, 559, 560, 313, 314, 315, 316, 317, 318, 319, 320, 321 },
                                   new[] { 322, 323, 324, 325, 390, 326, 391, 889, 890, 891, 892, 327, 392, 679, 680 },
                                   new[]
                                       {
                                           681, 682, 683, 684, 685, 686, 879, 880, 881, 882, 883, 884, 885, 886, 887, 393,
                                           687, 688, 689
                                       },
                                   new[]
                                       {
                                           690, 893, 894, 895, 896, 897, 898, 899, 394, 328, 329, 691, 692, 693, 694, 695,
                                           696, 697, 698, 699
                                       },
                                   new[]
                                       {
                                           700, 701, 702, 703, 704, 705, 395, 396, 397, 525, 862, 863, 864, 865, 866, 867,
                                           868, 869, 870
                                       },
                                   new[]
                                       {
                                           871, 872, 873, 874, 875, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716,
                                           717, 553, 718
                                       },
                                   new[] { 719, 720, 721, 722, 723, 724, 725, 726, 330, 331, 523, 557, 612, 727 },
                                   new[]
                                       {
                                           728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743,
                                           744, 332, 333
                                       },
                                   new[] { 398, 399, 900, 901, 902, 334, 335, 400, 401, 906, 907, 908, 745, 746, 747 },
                                   new[] { 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760 },
                                   new[] { 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775 },
                                   new[] { 776, 777, 778, 779, 780, 781, 782, 783, 784, 551, 556, 336, 337, 402 },
                                   new[] { 903, 904, 905, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795 },
                                   new[] { 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807 },
                                   new[] { 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821 },
                                   new[] { 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833 },
                                   new[] { 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845 },
                                   new[] { 846, 847, 848, 849, 876, 877, 878, 850, 851, 852, 853, 854 },
                                   new[] { 855, 856, 857, 858, 859, 860, 861, 403, 404, 405, 406, 407, 408 },
                                   new[]
                                       {
                                           614, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923,
                                           924, 426, 427, 428, 429
                                       },
                                   new[]
                                       { 430, 431, 432, 433, 434, 435, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418 },
                                   new[] { 419, 420, 421, 422, 423, 424, 425, 603, 925, 926, 927, 928 },
                                   new[] { 973, 929, 974, 930, 931, 957, 975, 932, 976 },
                                   new[] { 977, 997, 998, 999, 1000, 958, 1001, 959, 978 },
                                   new[] { 933, 934, 935, 979, 939, 940, 983, 941 },
                                   new[] { 980, 936, 960, 961, 937, 938, 942, 962 },
                                   new[] { 1002, 943, 963, 944, 964, 981, 945, 965 },
                                   new[] { 946, 1003, 1004, 1005, 1006, 982, 984 },
                                   new[] { 985, 986, 987, 988, 1007, 989, 947, 966, 948 },
                                   new[] { 949, 990, 991, 967, 1008, 950, 968, 951 },
                                   new[] { 992, 993, 969, 952, 953, 954, 970 },
                                   new[] { 994, 1009, 1010, 1011, 1012, 1013, 955, 971 },
                                   new[] { 995, 1014, 1015, 956, 972, 996, 1016, 1017, 1018 },
                                   new[] { 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027 },
                                   new[] { 1028, 1029, 1030, 1031, 1146, 1147, 1148, 1149, 1150, 1032, 1033, 1091 },
                                   new[]
                                       {
                                           1092, 1093, 1094, 1095, 1096, 1034, 1035, 1111, 1112, 1113, 1114, 1115, 1116,
                                           1117, 1118
                                       },
                                   new[]
                                       {
                                           1036, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073,
                                           1074
                                       },
                                   new[]
                                       {
                                           1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087,
                                           1088
                                       },
                                   new[] { 1089, 1090, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056 },
                                   new[] { 1057, 1058, 1059, 1060, 1061, 1037, 1038, 1039, 1040, 1041, 1042, 1043 },
                                   new[] { 1044, 1045, 1107, 1108, 1109, 1110, 1132, 1097, 1098, 1099, 1100, 1101, 1102 },
                                   new[]
                                       {
                                           1103, 1104, 1105, 1106, 1119, 1120, 1121, 1122, 1123, 1124, 1129, 1130, 1131,
                                           1151, 1152, 1153
                                       },
                                   new[]
                                       {
                                           1154, 1155, 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143,
                                           1144, 1145, 1125
                                       },
                                   new[]
                                       {
                                           1126, 1127, 1128, 1156, 1157, 1158, 1166, 1159, 1160, 1161, 1162, 1163, 1164,
                                           1165, 1167, 1168, 1169
                                       },
                                   new[]
                                       {
                                           1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182,
                                           1183, 1184, 1185, 1186, 1187, 1188
                                       }
                               };
                }
            }
        }

        private class ChronologicallyNt30 : DailyPlanSchedule
        {
            public override int[][] Schedule
            {
                get
                {
                    return new[]
                               {
                                   new[] { 973, 929, 974, 930, 931, 957, 975 },
                                   new[] { 932, 976, 977, 997, 998, 999, 1000 }, new[] { 958, 1001, 959, 978, 933, 934 },
                                   new[] { 935, 979, 939, 940, 983, 941 }, new[] { 980, 936, 960, 961, 937, 938 },
                                   new[] { 942, 962, 1002, 943, 963, 944 }, new[] { 964, 981, 945, 965, 946, 1003 },
                                   new[] { 1004, 1005, 1006, 982, 984, 985 }, new[] { 986, 987, 988, 1007, 989, 947, 966 }
                                   , new[] { 948, 949, 990, 991, 967, 1008 }, new[] { 950, 968, 951, 992, 993, 969 },
                                   new[] { 952, 953, 954, 970, 994 }, new[] { 1009, 1010, 1011, 1012, 1013, 955 },
                                   new[] { 971, 995, 1014, 1015, 956, 972, 996 },
                                   new[] { 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023 },
                                   new[] { 1024, 1025, 1026, 1027, 1028, 1029, 1030 },
                                   new[] { 1031, 1146, 1147, 1148, 1149, 1150, 1032, 1033, 1091 },
                                   new[] { 1092, 1093, 1094, 1095, 1096, 1034, 1035, 1111, 1112, 1113, 1114, 1115 },
                                   new[] { 1116, 1117, 1118, 1036, 1062, 1063, 1064, 1065, 1066, 1067, 1068 },
                                   new[] { 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077 },
                                   new[] { 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090 },
                                   new[] { 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055 },
                                   new[] { 1056, 1057, 1058, 1059, 1060, 1061, 1037, 1038, 1039 },
                                   new[] { 1040, 1041, 1042, 1043, 1044, 1045, 1107, 1108 },
                                   new[] { 1109, 1110, 1132, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104 },
                                   new[] { 1105, 1106, 1119, 1120, 1121, 1122, 1123, 1124, 1129, 1130, 1131, 1151, 1152 },
                                   new[] { 1153, 1154, 1155, 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142 },
                                   new[] { 1143, 1144, 1145, 1125, 1126, 1127, 1128, 1156, 1157, 1158, 1166, 1159 },
                                   new[]
                                       {
                                           1160, 1161, 1162, 1163, 1164, 1165, 1167, 1168, 1169, 1170, 1171, 1172, 1173,
                                           1174
                                       },
                                   new[]
                                       {
                                           1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187,
                                           1188
                                       }
                               };
                }
            }
        }
        private class ChronologicallyNt60 : DailyPlanSchedule
        {
            public override int[][] Schedule
            {
                get
                {
                    return new[]
                               {
                                   new[] { 973, 929, 974 }, new[] { 930, 931, 957, 975 }, new[] { 932, 976, 977 },
                                   new[] { 997, 998, 999, 1000 }, new[] { 958, 1001, 959 }, new[] { 978, 933, 934 },
                                   new[] { 935, 979, 939, 940 }, new[] { 983, 941 }, new[] { 980, 936, 960 },
                                   new[] { 961, 937, 938 }, new[] { 942, 962, 1002 }, new[] { 943, 963, 944 },
                                   new[] { 964, 981, 945 }, new[] { 965, 946, 1003 }, new[] { 1004, 1005, 1006 },
                                   new[] { 982, 984, 985 }, new[] { 986, 987, 988, 1007 }, new[] { 989, 947, 966 },
                                   new[] { 948, 949, 990 }, new[] { 991, 967, 1008 }, new[] { 950, 968, 951 },
                                   new[] { 992, 993, 969 }, new[] { 952, 953, 954 }, new[] { 970, 994 },
                                   new[] { 1009, 1010, 1011 }, new[] { 1012, 1013, 955 }, new[] { 971, 995, 1014 },
                                   new[] { 1015, 956, 972, 996 }, new[] { 1016, 1017, 1018, 1019 },
                                   new[] { 1020, 1021, 1022, 1023 }, new[] { 1024, 1025, 1026 },
                                   new[] { 1027, 1028, 1029, 1030 }, new[] { 1031, 1146, 1147, 1148, 1149 },
                                   new[] { 1150, 1032, 1033, 1091 }, new[] { 1092, 1093, 1094, 1095, 1096 },
                                   new[] { 1034, 1035, 1111, 1112, 1113, 1114, 1115 },
                                   new[] { 1116, 1117, 1118, 1036, 1062 }, new[] { 1063, 1064, 1065, 1066, 1067, 1068 },
                                   new[] { 1069, 1070, 1071, 1072, 1073 }, new[] { 1074, 1075, 1076, 1077 },
                                   new[] { 1078, 1079, 1080, 1081, 1082, 1083, 1084 },
                                   new[] { 1085, 1086, 1087, 1088, 1089, 1090 }, new[] { 1046, 1047, 1048, 1049, 1050 },
                                   new[] { 1051, 1052, 1053, 1054, 1055 }, new[] { 1056, 1057, 1058, 1059, 1060 },
                                   new[] { 1061, 1037, 1038, 1039 }, new[] { 1040, 1041, 1042, 1043 },
                                   new[] { 1044, 1045, 1107, 1108 }, new[] { 1109, 1110, 1132, 1097, 1098, 1099 },
                                   new[] { 1100, 1101, 1102, 1103, 1104 },
                                   new[] { 1105, 1106, 1119, 1120, 1121, 1122, 1123 },
                                   new[] { 1124, 1129, 1130, 1131, 1151, 1152 },
                                   new[] { 1153, 1154, 1155, 1133, 1134, 1135, 1136, 1137 },
                                   new[] { 1138, 1139, 1140, 1141, 1142 }, new[] { 1143, 1144, 1145, 1125, 1126 },
                                   new[] { 1127, 1128, 1156, 1157, 1158, 1166, 1159 },
                                   new[] { 1160, 1161, 1162, 1163, 1164, 1165 },
                                   new[] { 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174 },
                                   new[] { 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182 },
                                   new[] { 1183, 1184, 1185, 1186, 1187, 1188 }
                               };
                }
            }
        }
        private class ChronologicallyNt90 : DailyPlanSchedule
        {
            public override int[][] Schedule
            {
                get
                {
                    return new[]
                               {
                                   new[] { 973, 929 }, new[] { 974, 930 }, new[] { 931, 957, 975 }, new[] { 932, 976 },
                                   new[] { 977, 997 }, new[] { 998, 999, 1000 }, new[] { 958, 1001 }, new[] { 959, 978 },
                                   new[] { 933, 934 }, new[] { 935, 979, 939 }, new[] { 940, 983 }, new[] { 941 },
                                   new[] { 980, 936 }, new[] { 960, 961 }, new[] { 937, 938 }, new[] { 942, 962 },
                                   new[] { 1002, 943 }, new[] { 963, 944 }, new[] { 964, 981 }, new[] { 945, 965 },
                                   new[] { 946, 1003 }, new[] { 1004, 1005 }, new[] { 1006, 982 }, new[] { 984, 985 },
                                   new[] { 986, 987, 988 }, new[] { 1007, 989 }, new[] { 947, 966 }, new[] { 948, 949 },
                                   new[] { 990, 991 }, new[] { 967, 1008 }, new[] { 950, 968 }, new[] { 951, 992 },
                                   new[] { 993, 969 }, new[] { 952, 953 }, new[] { 954 }, new[] { 970, 994 },
                                   new[] { 1009 }, new[] { 1010, 1011, 1012 }, new[] { 1013, 955 }, new[] { 971, 995 },
                                   new[] { 1014, 1015 }, new[] { 956, 972, 996 }, new[] { 1016, 1017, 1018 },
                                   new[] { 1019, 1020 }, new[] { 1021, 1022, 1023 }, new[] { 1024, 1025 },
                                   new[] { 1026, 1027 }, new[] { 1028, 1029, 1030 }, new[] { 1031, 1146 },
                                   new[] { 1147, 1148, 1149, 1150, 1032 }, new[] { 1033, 1091 },
                                   new[] { 1092, 1093, 1094 }, new[] { 1095, 1096, 1034, 1035 },
                                   new[] { 1111, 1112, 1113, 1114, 1115 }, new[] { 1116, 1117, 1118, 1036 },
                                   new[] { 1062, 1063, 1064 }, new[] { 1065, 1066, 1067, 1068 },
                                   new[] { 1069, 1070, 1071, 1072 }, new[] { 1073, 1074, 1075 }, new[] { 1076, 1077 },
                                   new[] { 1078, 1079, 1080, 1081 }, new[] { 1082, 1083, 1084, 1085, 1086 },
                                   new[] { 1087, 1088, 1089, 1090 }, new[] { 1046, 1047, 1048 },
                                   new[] { 1049, 1050, 1051, 1052 }, new[] { 1053, 1054, 1055 },
                                   new[] { 1056, 1057, 1058 }, new[] { 1059, 1060, 1061 }, new[] { 1037, 1038, 1039 },
                                   new[] { 1040, 1041, 1042 }, new[] { 1043, 1044 }, new[] { 1045, 1107, 1108 },
                                   new[] { 1109, 1110, 1132, 1097 }, new[] { 1098, 1099, 1100, 1101 },
                                   new[] { 1102, 1103, 1104 }, new[] { 1105, 1106, 1119, 1120 },
                                   new[] { 1121, 1122, 1123, 1124, 1129 }, new[] { 1130, 1131, 1151, 1152 },
                                   new[] { 1153, 1154, 1155, 1133, 1134 }, new[] { 1135, 1136, 1137, 1138, 1139 },
                                   new[] { 1140, 1141, 1142 }, new[] { 1143, 1144, 1145 },
                                   new[] { 1125, 1126, 1127, 1128 }, new[] { 1156, 1157, 1158, 1166, 1159 },
                                   new[] { 1160, 1161, 1162, 1163 }, new[] { 1164, 1165, 1167, 1168 },
                                   new[] { 1169, 1170, 1171, 1172, 1173, 1174 }, new[] { 1175, 1176, 1177, 1178, 1179 },
                                   new[] { 1180, 1181, 1182, 1183, 1184 }, new[] { 1185, 1186, 1187, 1188 }
                               };
                }
            }
        }
        private class Fast30DayNt : DailyPlanSchedule
        {
            public override int[][] Schedule
            {
                get
                {
                    return new[]
                               {
                                   new[] { 929, 930, 931, 932, 933, 934, 935, 936, 937 },
                                   new[] { 938, 939, 940, 941, 942, 943 },
                                   new[] { 944, 945, 946, 947, 948, 949, 950, 951 }, new[] { 952, 953, 954, 955, 956 },
                                   new[] { 957, 958, 959, 960, 961, 962 }, new[] { 963, 964, 965, 966, 967, 968, 969 },
                                   new[] { 970, 971, 972, 973, 974 }, new[] { 975, 976, 977, 978, 979, 980 },
                                   new[] { 981, 982, 983, 984, 985 }, new[] { 986, 987, 988, 989, 990, 991, 992 },
                                   new[] { 993, 994, 995, 996, 997 }, new[] { 998, 999, 1000, 1001, 1002 },
                                   new[] { 1003, 1004, 1005, 1006, 1007 },
                                   new[] { 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015 },
                                   new[] { 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023 },
                                   new[] { 1024, 1025, 1026, 1027, 1028, 1029, 1030 },
                                   new[] { 1031, 1032, 1033, 1034, 1035, 1036, 1037 },
                                   new[] { 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045 },
                                   new[] { 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054 },
                                   new[] { 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065 },
                                   new[] { 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075 },
                                   new[] { 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087 },
                                   new[] { 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098 },
                                   new[] { 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108 },
                                   new[]
                                       {
                                           1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121,
                                           1122, 1123
                                       },
                                   new[]
                                       {
                                           1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136,
                                           1137
                                       },
                                   new[] { 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147 },
                                   new[] { 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160 },
                                   new[]
                                       {
                                           1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173,
                                           1174
                                       },
                                   new[]
                                       {
                                           1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187,
                                           1188
                                       }
                               };
                }
            }
        }
        private class Fast60DayNt : DailyPlanSchedule
        {
            public override int[][] Schedule
            {
                get
                {
                    return new[]
                               {
                                   new[] { 929, 930, 931, 932, 933 }, new[] { 934, 935, 936, 937 },
                                   new[] { 938, 939, 940 }, new[] { 941, 942, 943 }, new[] { 944, 945, 946, 947, 948 },
                                   new[] { 949, 950, 951 }, new[] { 952, 953 }, new[] { 954, 955, 956 },
                                   new[] { 957, 958, 959, 960 }, new[] { 961, 962 }, new[] { 963, 964, 965 },
                                   new[] { 966, 967, 968, 969 }, new[] { 970, 971 }, new[] { 972, 973, 974 },
                                   new[] { 975, 976, 977 }, new[] { 978, 979, 980 }, new[] { 981, 982 },
                                   new[] { 983, 984, 985 }, new[] { 986, 987, 988, 989 }, new[] { 990, 991, 992 },
                                   new[] { 993, 994 }, new[] { 995, 996, 997 }, new[] { 998, 999, 1000 },
                                   new[] { 1001, 1002 }, new[] { 1003, 1004, 1005 }, new[] { 1006, 1007 },
                                   new[] { 1008, 1009, 1010, 1011 }, new[] { 1012, 1013, 1014, 1015 },
                                   new[] { 1016, 1017, 1018, 1019 }, new[] { 1020, 1021, 1022, 1023 },
                                   new[] { 1024, 1025, 1026 }, new[] { 1027, 1028, 1029, 1030 },
                                   new[] { 1031, 1032, 1033 }, new[] { 1034, 1035, 1036, 1037 },
                                   new[] { 1038, 1039, 1040, 1041 }, new[] { 1042, 1043, 1044, 1045 },
                                   new[] { 1046, 1047, 1048, 1049 }, new[] { 1050, 1051, 1052, 1053, 1054 },
                                   new[] { 1055, 1056, 1057, 1058, 1059, 1060 }, new[] { 1061, 1062, 1063, 1064, 1065 },
                                   new[] { 1066, 1067, 1068, 1069, 1070, 1071 }, new[] { 1072, 1073, 1074, 1075 },
                                   new[] { 1076, 1077, 1078, 1079 },
                                   new[] { 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087 },
                                   new[] { 1088, 1089, 1090, 1091, 1092 }, new[] { 1093, 1094, 1095, 1096, 1097, 1098 },
                                   new[] { 1099, 1100, 1101, 1102, 1103 }, new[] { 1104, 1105, 1106, 1107, 1108 },
                                   new[] { 1109, 1110, 1111, 1112, 1113, 1114, 1115 },
                                   new[] { 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123 },
                                   new[] { 1124, 1125, 1126, 1127, 1128, 1129 },
                                   new[] { 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137 },
                                   new[] { 1138, 1139, 1140, 1141, 1142 }, new[] { 1143, 1144, 1145, 1146, 1147 },
                                   new[] { 1148, 1149, 1150, 1151, 1152, 1153 },
                                   new[] { 1154, 1155, 1156, 1157, 1158, 1159, 1160 },
                                   new[] { 1161, 1162, 1163, 1164, 1165, 1166 },
                                   new[] { 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174 },
                                   new[] { 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182 },
                                   new[] { 1183, 1184, 1185, 1186, 1187, 1188 }
                               };
                }
            }
        }
        private class Fast90DayNt : DailyPlanSchedule
        {
            public override int[][] Schedule
            {
                get
                {
                    return new[]
                               {
                                   new[] { 929, 930, 931, 932 }, new[] { 933, 934 }, new[] { 935, 936, 937 },
                                   new[] { 938, 939 }, new[] { 940, 941 }, new[] { 942, 943 }, new[] { 944, 945, 946 },
                                   new[] { 947, 948, 949 }, new[] { 950, 951 }, new[] { 952, 953 }, new[] { 954 },
                                   new[] { 955, 956 }, new[] { 957, 958 }, new[] { 959, 960, 961 }, new[] { 962 },
                                   new[] { 963, 964, 965 }, new[] { 966 }, new[] { 967, 968, 969 }, new[] { 970 },
                                   new[] { 971, 972 }, new[] { 973, 974 }, new[] { 975, 976 }, new[] { 977, 978 },
                                   new[] { 979, 980 }, new[] { 981 }, new[] { 982, 983 }, new[] { 984, 985 },
                                   new[] { 986, 987 }, new[] { 988, 989, 990 }, new[] { 991, 992 }, new[] { 993 },
                                   new[] { 994, 995 }, new[] { 996, 997 }, new[] { 998, 999 }, new[] { 1000, 1001 },
                                   new[] { 1002 }, new[] { 1003, 1004 }, new[] { 1005, 1006 }, new[] { 1007 },
                                   new[] { 1008, 1009, 1010 }, new[] { 1011, 1012, 1013 }, new[] { 1014, 1015 },
                                   new[] { 1016, 1017, 1018 }, new[] { 1019, 1020 }, new[] { 1021, 1022, 1023 },
                                   new[] { 1024, 1025 }, new[] { 1026, 1027 }, new[] { 1028, 1029, 1030 },
                                   new[] { 1031, 1032 }, new[] { 1033, 1034 }, new[] { 1035, 1036, 1037 },
                                   new[] { 1038, 1039 }, new[] { 1040, 1041, 1042 }, new[] { 1043, 1044, 1045 },
                                   new[] { 1046, 1047, 1048 }, new[] { 1049, 1050, 1051 }, new[] { 1052, 1053, 1054 },
                                   new[] { 1055, 1056, 1057, 1058 }, new[] { 1059, 1060, 1061 },
                                   new[] { 1062, 1063, 1064, 1065 }, new[] { 1066, 1067, 1068, 1069 },
                                   new[] { 1070, 1071, 1072 }, new[] { 1073, 1074, 1075 }, new[] { 1076, 1077 },
                                   new[] { 1078, 1079, 1080, 1081, 1082 }, new[] { 1083, 1084, 1085, 1086, 1087 },
                                   new[] { 1088, 1089, 1090, 1091 }, new[] { 1092, 1093, 1094 },
                                   new[] { 1095, 1096, 1097, 1098 }, new[] { 1099, 1100, 1101 },
                                   new[] { 1102, 1103, 1104 }, new[] { 1105, 1106, 1107, 1108 },
                                   new[] { 1109, 1110, 1111, 1112, 1113 }, new[] { 1114, 1115, 1116, 1117, 1118 },
                                   new[] { 1119, 1120, 1121, 1122, 1123 }, new[] { 1124, 1125, 1126, 1127 },
                                   new[] { 1128, 1129, 1130, 1131, 1132 }, new[] { 1133, 1134, 1135, 1136, 1137 },
                                   new[] { 1138, 1139, 1140, 1141 }, new[] { 1142, 1143 },
                                   new[] { 1144, 1145, 1146, 1147 }, new[] { 1148, 1149, 1150, 1151 },
                                   new[] { 1152, 1153, 1154, 1155 }, new[] { 1156, 1157, 1158, 1159, 1160 },
                                   new[] { 1161, 1162, 1163, 1164 }, new[] { 1165, 1166, 1167, 1168 },
                                   new[] { 1169, 1170, 1171, 1172, 1173, 1174 }, new[] { 1175, 1176, 1177, 1178, 1179 },
                                   new[] { 1180, 1181, 1182, 1183, 1184 }, new[] { 1185, 1186, 1187, 1188 }
                               };
                }
            }
        }
        private class VersePerDay180 : DailyPlanSchedule
        {
            public override int[][] Schedule
            {
                get
                {
                    return new[]
                               {
                                   new[] { 0, 1, 2, 3, 4, 5, 6 }, new[] { 7, 8, 9, 10, 11, 12, 13 },
                                   new[] { 14, 15, 16, 17, 18, 19 }, new[] { 20, 21, 22, 23, 24 },
                                   new[] { 25, 26, 27, 28, 29 }, new[] { 30, 31, 32, 33, 34 },
                                   new[] { 35, 36, 37, 38, 39 }, new[] { 40, 41, 42, 43, 44 },
                                   new[] { 45, 46, 47, 48, 49, 50 }, new[] { 51, 52, 53, 54, 55, 56, 57 },
                                   new[] { 58, 59, 60, 61, 62, 63 }, new[] { 64, 65, 66, 67, 68, 69 },
                                   new[] { 70, 71, 72, 73, 74 }, new[] { 75, 76, 77, 78, 79 },
                                   new[] { 80, 81, 82, 83, 84, 85 }, new[] { 86, 87, 88, 89, 90 },
                                   new[] { 91, 92, 93, 94, 95, 96, 97 }, new[] { 98, 99, 100, 101, 102 },
                                   new[] { 103, 104, 105, 106, 107 }, new[] { 108, 109, 110, 111, 112, 113 },
                                   new[] { 114, 115, 116, 117 }, new[] { 118, 119, 120 },
                                   new[] { 121, 122, 123, 124, 125 }, new[] { 126, 127, 128, 129, 130 },
                                   new[] { 131, 132, 133, 134, 135 }, new[] { 136, 137, 138, 139, 140, 141 },
                                   new[] { 142, 143, 144, 145, 146 }, new[] { 147, 148, 149, 150 },
                                   new[] { 151, 152, 153, 154, 155 }, new[] { 156, 157, 158, 159, 160, 161 },
                                   new[] { 162, 163, 164, 165, 166, 167, 168 },
                                   new[] { 169, 170, 171, 172, 173, 174, 175 }, new[] { 176, 177, 178, 179, 180, 181 },
                                   new[] { 182, 183, 184, 185, 186, 187 },
                                   new[] { 188, 189, 190, 191, 192, 193, 194, 195 }, new[] { 196, 197, 198, 199, 200 },
                                   new[] { 201, 202, 203, 204, 205, 206 }, new[] { 207, 208, 209, 210, 211, 212 },
                                   new[] { 213, 214, 215, 216, 217, 218 }, new[] { 219, 220, 221, 222, 223 },
                                   new[] { 224, 225, 226, 227, 228, 229, 230 },
                                   new[] { 231, 232, 233, 234, 235, 236, 237 },
                                   new[] { 238, 239, 240, 241, 242, 243, 244, 245 }, new[] { 246, 247, 248, 249, 250 },
                                   new[] { 251, 252, 253, 254, 255 }, new[] { 256, 257, 258, 259, 260, 261, 262 },
                                   new[] { 263, 264, 265, 266, 267, 268, 269 },
                                   new[] { 270, 271, 272, 273, 274, 275, 276, 277 },
                                   new[] { 278, 279, 280, 281, 282, 283 }, new[] { 284, 285, 286, 287, 288 },
                                   new[] { 289, 290, 291, 292 }, new[] { 293, 294, 295, 296, 297 },
                                   new[] { 298, 299, 300, 301 }, new[] { 302, 303, 304, 305, 306, 307 },
                                   new[] { 308, 309, 310, 311, 312 }, new[] { 313, 314, 315, 316, 317 },
                                   new[] { 318, 319, 320, 321, 322, 323 }, new[] { 324, 325, 326, 327, 328, 329 },
                                   new[] { 330, 331, 332, 333, 334, 335 }, new[] { 336, 337, 338, 339 },
                                   new[] { 340, 341, 342, 343 }, new[] { 344, 345, 346, 347, 348 },
                                   new[] { 349, 350, 351, 352, 353, 354 },
                                   new[] { 355, 356, 357, 358, 359, 360, 361, 362 },
                                   new[] { 363, 364, 365, 366, 367, 368 },
                                   new[] { 369, 370, 371, 372, 373, 374, 375, 376 },
                                   new[] { 377, 378, 379, 380, 381, 382, 383, 384 },
                                   new[] { 385, 386, 387, 388, 389, 390, 391, 392 },
                                   new[] { 393, 394, 395, 396, 397, 398, 399 }, new[] { 400, 401, 402, 403, 404 },
                                   new[] { 405, 406, 407, 408, 409, 410, 411, 412 },
                                   new[] { 413, 414, 415, 416, 417, 418 }, new[] { 419, 420, 421, 422, 423 },
                                   new[] { 424, 425, 426, 427, 428, 429, 430 },
                                   new[] { 431, 432, 433, 434, 435, 436, 437, 438, 439 },
                                   new[] { 440, 441, 442, 443, 444, 445, 446 },
                                   new[] { 447, 448, 449, 450, 451, 452, 453 },
                                   new[] { 454, 455, 456, 457, 458, 459, 460, 461 },
                                   new[] { 462, 463, 464, 465, 466, 467 }, new[] { 468, 469, 470, 471, 472, 473 },
                                   new[] { 474, 475, 476, 477, 478, 479, 480, 481, 482, 483 },
                                   new[] { 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495 },
                                   new[] { 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508 },
                                   new[] { 509, 510, 511, 512, 513, 514, 515 },
                                   new[] { 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527 },
                                   new[] { 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541 },
                                   new[] { 542, 543, 544, 545, 546, 547, 548, 549, 550 },
                                   new[] { 551, 552, 553, 554, 555, 556, 557 },
                                   new[] { 558, 559, 560, 561, 562, 563, 564, 565, 566 },
                                   new[] { 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579 },
                                   new[] { 580, 581, 582, 583, 584 },
                                   new[] { 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595 }, new[] { 596 },
                                   new[]
                                       {
                                           597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612,
                                           613, 614, 615
                                       },
                                   new[] { 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628 },
                                   new[] { 629, 630, 631, 632, 633, 634 }, new[] { 635, 636, 637, 638, 639, 640 },
                                   new[] { 641, 642, 643, 644, 645 }, new[] { 646, 647, 648, 649, 650, 651 },
                                   new[] { 652, 653, 654, 655, 656, 657 },
                                   new[] { 658, 659, 660, 661, 662, 663, 664, 665 },
                                   new[] { 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676 },
                                   new[] { 677, 678, 679, 680, 681, 682, 683, 684, 685 },
                                   new[] { 686, 687, 688, 689, 690, 691, 692, 693 },
                                   new[] { 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704 },
                                   new[] { 705, 706, 707, 708, 709, 710, 711, 712 },
                                   new[] { 713, 714, 715, 716, 717, 718, 719 },
                                   new[] { 720, 721, 722, 723, 724, 725, 726, 727 },
                                   new[] { 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738 },
                                   new[] { 739, 740, 741, 742, 743, 744, 745, 746 },
                                   new[] { 747, 748, 749, 750, 751, 752 },
                                   new[] { 753, 754, 755, 756, 757, 758, 759, 760 },
                                   new[] { 761, 762, 763, 764, 765, 766, 767, 768 },
                                   new[] { 769, 770, 771, 772, 773, 774 }, new[] { 775, 776, 777, 778, 779, 780 },
                                   new[] { 781, 782, 783, 784, 785, 786, 787, 788, 789 },
                                   new[] { 790, 791, 792, 793, 794 }, new[] { 795, 796, 797, 798, 799 },
                                   new[] { 800, 801, 802, 803, 804, 805, 806 },
                                   new[] { 807, 808, 809, 810, 811, 812, 813, 814 },
                                   new[] { 815, 816, 817, 818, 819, 820 }, new[] { 821, 822, 823, 824, 825 },
                                   new[] { 826, 827, 828, 829, 830, 831, 832 }, new[] { 833, 834, 835, 836, 837, 838 },
                                   new[] { 839, 840, 841, 842, 843, 844 }, new[] { 845, 846, 847, 848, 849, 850 },
                                   new[] { 851, 852, 853, 854, 855, 856 }, new[] { 857, 858, 859, 860, 861, 862, 863 },
                                   new[] { 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875 },
                                   new[] { 876, 877, 878, 879, 880, 881, 882, 883, 884 },
                                   new[] { 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896 },
                                   new[] { 897, 898, 899, 900, 901, 902, 903, 904, 905, 906 },
                                   new[] { 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917 },
                                   new[] { 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929 },
                                   new[] { 930, 931, 932, 933, 934 }, new[] { 935, 936, 937, 938, 939 },
                                   new[] { 940, 941, 942, 943 }, new[] { 944, 945, 946, 947, 948, 949 },
                                   new[] { 950, 951, 952 }, new[] { 953, 954, 955 }, new[] { 956, 957, 958, 959, 960 },
                                   new[] { 961, 962, 963, 964 }, new[] { 965, 966, 967, 968 },
                                   new[] { 969, 970, 971, 972 }, new[] { 973, 974, 975 }, new[] { 976, 977, 978, 979 },
                                   new[] { 980, 981, 982 }, new[] { 983, 984, 985, 986 }, new[] { 987, 988, 989, 990 },
                                   new[] { 991, 992, 993, 994 }, new[] { 995, 996, 997 }, new[] { 998, 999, 1000, 1001 },
                                   new[] { 1002, 1003, 1004 }, new[] { 1005, 1006, 1007, 1008 },
                                   new[] { 1009, 1010, 1011, 1012, 1013 }, new[] { 1014, 1015, 1016, 1017, 1018 },
                                   new[] { 1019, 1020, 1021, 1022, 1023 }, new[] { 1024, 1025, 1026, 1027 },
                                   new[] { 1028, 1029, 1030, 1031, 1032 }, new[] { 1033, 1034, 1035, 1036, 1037 },
                                   new[] { 1038, 1039, 1040, 1041, 1042 }, new[] { 1043, 1044, 1045, 1046, 1047 },
                                   new[] { 1048, 1049, 1050, 1051, 1052, 1053 },
                                   new[] { 1054, 1055, 1056, 1057, 1058, 1059, 1060 },
                                   new[] { 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068 },
                                   new[] { 1069, 1070, 1071, 1072, 1073, 1074 },
                                   new[] { 1075, 1076, 1077, 1078, 1079, 1080 },
                                   new[] { 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088 },
                                   new[] { 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096 },
                                   new[] { 1097, 1098, 1099, 1100, 1101, 1102, 1103 },
                                   new[] { 1104, 1105, 1106, 1107, 1108, 1109 },
                                   new[] { 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119 },
                                   new[] { 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128 },
                                   new[] { 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138 },
                                   new[] { 1139, 1140, 1141, 1142, 1143, 1144 },
                                   new[] { 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152 },
                                   new[] { 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160 },
                                   new[] { 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169 },
                                   new[] { 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179 },
                                   new[] { 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188 }
                               };
                }
            }
        }
        private class VersePerDay365 : DailyPlanSchedule
        {
            public override int[][] Schedule
            {
                get
                {
                    return new[]
                               {
                                   new[] { 0, 1, 2 }, new[] { 3, 4, 5, 6 }, new[] { 7, 8, 9 }, new[] { 10, 11, 12 },
                                   new[] { 13, 14, 15, 16 }, new[] { 17, 18, 19 }, new[] { 20, 21, 22 }, new[] { 23, 24 },
                                   new[] { 25, 26 }, new[] { 27, 28, 29 }, new[] { 30 }, new[] { 31, 32, 33, 34 },
                                   new[] { 35, 36 }, new[] { 37, 38, 39 }, new[] { 40, 41 }, new[] { 42, 43 },
                                   new[] { 44, 45, 46 }, new[] { 47, 48, 49 }, new[] { 50, 51, 52, 53 },
                                   new[] { 54, 55, 56 }, new[] { 57, 58, 59 }, new[] { 60, 61 }, new[] { 62, 63, 64 },
                                   new[] { 65, 66, 67, 68 }, new[] { 69, 70, 71 }, new[] { 72, 73, 74 }, new[] { 75, 76 },
                                   new[] { 77, 78 }, new[] { 79, 80, 81 }, new[] { 82, 83, 84 }, new[] { 85, 86 },
                                   new[] { 87, 88, 89 }, new[] { 90, 91, 92, 93 }, new[] { 94, 95, 96 }, new[] { 97, 98 },
                                   new[] { 99, 100, 101 }, new[] { 102, 103 }, new[] { 104, 105 }, new[] { 106, 107, 108 }
                                   , new[] { 109, 110, 111 }, new[] { 112, 113, 114 }, new[] { 115 }, new[] { 116, 117 },
                                   new[] { 118, 119 }, new[] { 120, 121, 122 }, new[] { 123 }, new[] { 124, 125, 126 },
                                   new[] { 127, 128, 129 }, new[] { 130, 131 }, new[] { 132, 133 },
                                   new[] { 134, 135, 136 }, new[] { 137, 138, 139 }, new[] { 140, 141, 142 },
                                   new[] { 143, 144 }, new[] { 145, 146, 147 }, new[] { 148 }, new[] { 149, 150 },
                                   new[] { 151, 152, 153 }, new[] { 154, 155, 156 }, new[] { 157, 158 },
                                   new[] { 159, 160, 161, 162 }, new[] { 163, 164, 165 }, new[] { 166, 167, 168 },
                                   new[] { 169, 170, 171, 172 }, new[] { 173, 174, 175, 176 }, new[] { 177, 178, 179 },
                                   new[] { 180, 181 }, new[] { 182, 183, 184 }, new[] { 185, 186, 187, 188 },
                                   new[] { 189, 190, 191, 192 }, new[] { 193, 194, 195 }, new[] { 196, 197 },
                                   new[] { 198, 199, 200 }, new[] { 201, 202, 203, 204 }, new[] { 205, 206 },
                                   new[] { 207, 208, 209 }, new[] { 210, 211, 212 }, new[] { 213, 214, 215 },
                                   new[] { 216, 217 }, new[] { 218, 219 }, new[] { 220, 221, 222, 223 },
                                   new[] { 224, 225, 226, 227 }, new[] { 228, 229, 230 }, new[] { 231, 232, 233 },
                                   new[] { 234, 235, 236 }, new[] { 237, 238, 239, 240 }, new[] { 241, 242, 243, 244 },
                                   new[] { 245, 246, 247, 248 }, new[] { 249, 250 }, new[] { 251, 252 },
                                   new[] { 253, 254, 255 }, new[] { 256, 257, 258 }, new[] { 259, 260, 261 },
                                   new[] { 262, 263, 264, 265 }, new[] { 266, 267, 268, 269 }, new[] { 270, 271, 272 },
                                   new[] { 273, 274, 275, 276 }, new[] { 277, 278, 279 }, new[] { 280, 281, 282 },
                                   new[] { 283, 284 }, new[] { 285, 286, 287 }, new[] { 288, 289 }, new[] { 290, 291 },
                                   new[] { 292, 293, 294 }, new[] { 295, 296 }, new[] { 297, 298 }, new[] { 299, 300 },
                                   new[] { 301, 302, 303 }, new[] { 304, 305 }, new[] { 306, 307, 308 },
                                   new[] { 309, 310 }, new[] { 311, 312, 313 }, new[] { 314, 315, 316 },
                                   new[] { 317, 318 }, new[] { 319, 320, 321 }, new[] { 322, 323, 324, 325 },
                                   new[] { 326, 327 }, new[] { 328, 329, 330 }, new[] { 331, 332, 333 },
                                   new[] { 334, 335, 336 }, new[] { 337, 338 }, new[] { 339, 340 }, new[] { 341, 342 },
                                   new[] { 343, 344 }, new[] { 345, 346 }, new[] { 347, 348, 349 },
                                   new[] { 350, 351, 352 }, new[] { 353, 354, 355 }, new[] { 356, 357, 358, 359 },
                                   new[] { 360, 361, 362 }, new[] { 363, 364, 365 }, new[] { 366, 367, 368, 369 },
                                   new[] { 370, 371, 372, 373 }, new[] { 374, 375, 376 },
                                   new[] { 377, 378, 379, 380, 381 }, new[] { 382, 383, 384, 385 },
                                   new[] { 386, 387, 388, 389 }, new[] { 390, 391, 392, 393 }, new[] { 394, 395, 396 },
                                   new[] { 397, 398, 399 }, new[] { 400, 401, 402 }, new[] { 403, 404 },
                                   new[] { 405, 406, 407, 408, 409 }, new[] { 410, 411, 412 }, new[] { 413, 414, 415 },
                                   new[] { 416, 417, 418 }, new[] { 419, 420, 421 }, new[] { 422, 423 },
                                   new[] { 424, 425 }, new[] { 426, 427, 428, 429 }, new[] { 430, 431, 432, 433, 434 },
                                   new[] { 435, 436, 437, 438, 439 }, new[] { 440, 441, 442 },
                                   new[] { 443, 444, 445, 446 }, new[] { 447, 448, 449 }, new[] { 450, 451, 452, 453 },
                                   new[] { 454, 455, 456 }, new[] { 457, 458, 459, 460 }, new[] { 461, 462, 463, 464 },
                                   new[] { 465, 466 }, new[] { 467, 468, 469 }, new[] { 470, 471, 472 },
                                   new[] { 473, 474, 475 }, new[] { 476, 477, 478, 479, 480, 481 },
                                   new[] { 482, 483, 484, 485, 486, 487 },
                                   new[] { 488, 489, 490, 491, 492, 493, 494, 495 }, new[] { 496, 497, 498, 499 },
                                   new[] { 500, 501, 502, 503, 504, 505, 506 }, new[] { 507, 508, 509, 510, 511 },
                                   new[] { 512, 513, 514 }, new[] { 515, 516, 517, 518, 519, 520 },
                                   new[] { 521, 522, 523, 524, 525, 526 }, new[] { 527, 528, 529, 530, 531, 532 },
                                   new[] { 533, 534, 535, 536, 537, 538 }, new[] { 539, 540, 541, 542, 543, 544 },
                                   new[] { 545, 546, 547, 548 }, new[] { 549, 550, 551, 552 }, new[] { 553, 554, 555 },
                                   new[] { 556, 557, 558, 559, 560 }, new[] { 561, 562, 563, 564, 565 },
                                   new[] { 566, 567, 568, 569 }, new[] { 570, 571, 572, 573, 574, 575, 576 },
                                   new[] { 577, 578, 579, 580, 581 }, new[] { 582, 583 }, new[] { 584, 585 },
                                   new[] { 586, 587, 588, 589, 590, 591, 592 }, new[] { 593, 594, 595 }, new[] { 596 },
                                   new[] { 597, 598, 599, 600, 601 },
                                   new[] { 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612 },
                                   new[] { 613, 614, 615, 616, 617 }, new[] { 618, 619, 620, 621, 622, 623, 624 },
                                   new[] { 625, 626, 627, 628, 629 }, new[] { 630, 631, 632 }, new[] { 633, 634, 635 },
                                   new[] { 636, 637, 638 }, new[] { 639, 640, 641 }, new[] { 642, 643 },
                                   new[] { 644, 645, 646 }, new[] { 647, 648, 649 }, new[] { 650, 651, 652 },
                                   new[] { 653, 654, 655 }, new[] { 656, 657, 658 }, new[] { 659, 660, 661 },
                                   new[] { 662, 663, 664, 665, 666 }, new[] { 667, 668, 669, 670, 671 },
                                   new[] { 672, 673, 674, 675, 676, 677 }, new[] { 678, 679, 680, 681 },
                                   new[] { 682, 683, 684, 685 }, new[] { 686, 687, 688, 689 },
                                   new[] { 690, 691, 692, 693, 694 }, new[] { 695, 696, 697, 698, 699, 700 },
                                   new[] { 701, 702, 703, 704 }, new[] { 705, 706, 707, 708 },
                                   new[] { 709, 710, 711, 712 }, new[] { 713, 714, 715, 716 },
                                   new[] { 717, 718, 719, 720 }, new[] { 721, 722, 723 }, new[] { 724, 725, 726, 727 },
                                   new[] { 728, 729, 730, 731, 732, 733 }, new[] { 734, 735, 736, 737, 738 },
                                   new[] { 739, 740, 741, 742, 743 }, new[] { 744, 745, 746 }, new[] { 747, 748, 749 },
                                   new[] { 750, 751, 752 }, new[] { 753, 754, 755, 756 }, new[] { 757, 758, 759 },
                                   new[] { 760, 761, 762, 763 }, new[] { 764, 765, 766, 767 }, new[] { 768, 769, 770 },
                                   new[] { 771, 772, 773, 774 }, new[] { 775, 776 }, new[] { 777, 778, 779, 780 },
                                   new[] { 781, 782, 783 }, new[] { 784, 785, 786, 787, 788 },
                                   new[] { 789, 790, 791, 792 }, new[] { 793, 794 }, new[] { 795 },
                                   new[] { 796, 797, 798 }, new[] { 799, 800, 801 }, new[] { 802, 803, 804, 805 },
                                   new[] { 806, 807, 808, 809 }, new[] { 810, 811, 812, 813 },
                                   new[] { 814, 815, 816, 817 }, new[] { 818, 819 }, new[] { 820, 821, 822 },
                                   new[] { 823, 824 }, new[] { 825, 826, 827 }, new[] { 828, 829, 830, 831 },
                                   new[] { 832, 833, 834 }, new[] { 835, 836, 837 }, new[] { 838, 839, 840 },
                                   new[] { 841, 842 }, new[] { 843, 844, 845, 846 }, new[] { 847, 848, 849 },
                                   new[] { 850, 851 }, new[] { 852, 853, 854 }, new[] { 855, 856, 857 },
                                   new[] { 858, 859, 860 }, new[] { 861, 862, 863, 864, 865 },
                                   new[] { 866, 867, 868, 869, 870, 871 }, new[] { 872, 873, 874, 875, 876, 877 },
                                   new[] { 878, 879, 880, 881 }, new[] { 882, 883, 884, 885, 886 },
                                   new[] { 887, 888, 889, 890, 891, 892 }, new[] { 893, 894, 895, 896, 897, 898 },
                                   new[] { 899, 900, 901, 902, 903 }, new[] { 904, 905, 906, 907, 908 },
                                   new[] { 909, 910, 911, 912, 913 }, new[] { 914, 915, 916, 917, 918, 919 },
                                   new[] { 920, 921, 922, 923, 924 }, new[] { 925, 926, 927, 928, 929 },
                                   new[] { 930, 931, 932, 933 }, new[] { 934, 935 }, new[] { 936, 937, 938 },
                                   new[] { 939, 940 }, new[] { 941 }, new[] { 942, 943, 944 }, new[] { 945, 946, 947 },
                                   new[] { 948, 949 }, new[] { 950, 951 }, new[] { 952, 953 }, new[] { 954 },
                                   new[] { 955 }, new[] { 956, 957, 958 }, new[] { 959, 960 }, new[] { 961, 962 },
                                   new[] { 963, 964 }, new[] { 965, 966 }, new[] { 967, 968 }, new[] { 969, 970 },
                                   new[] { 971, 972 }, new[] { 973 }, new[] { 974, 975 }, new[] { 976, 977 },
                                   new[] { 978, 979 }, new[] { 980 }, new[] { 981, 982 }, new[] { 983 },
                                   new[] { 984, 985 }, new[] { 986, 987, 988 }, new[] { 989, 990 }, new[] { 991, 992 },
                                   new[] { 993, 994 }, new[] { 995 }, new[] { 996, 997 }, new[] { 998, 999 },
                                   new[] { 1000, 1001 }, new[] { 1002 }, new[] { 1003, 1004 }, new[] { 1005, 1006 },
                                   new[] { 1007 }, new[] { 1008, 1009 }, new[] { 1010, 1011, 1012 },
                                   new[] { 1013, 1014, 1015 }, new[] { 1016, 1017 }, new[] { 1018, 1019, 1020 },
                                   new[] { 1021, 1022 }, new[] { 1023, 1024 }, new[] { 1025, 1026 },
                                   new[] { 1027, 1028, 1029 }, new[] { 1030, 1031 }, new[] { 1032, 1033 },
                                   new[] { 1034, 1035, 1036 }, new[] { 1037, 1038 }, new[] { 1039, 1040 },
                                   new[] { 1041, 1042, 1043 }, new[] { 1044, 1045, 1046 }, new[] { 1047, 1048, 1049 },
                                   new[] { 1050, 1051, 1052 }, new[] { 1053, 1054, 1055 },
                                   new[] { 1056, 1057, 1058, 1059 }, new[] { 1060, 1061, 1062 },
                                   new[] { 1063, 1064, 1065, 1066 }, new[] { 1067, 1068, 1069 },
                                   new[] { 1070, 1071, 1072 }, new[] { 1073, 1074, 1075 }, new[] { 1076, 1077 },
                                   new[] { 1078, 1079, 1080, 1081, 1082 }, new[] { 1083, 1084, 1085, 1086 },
                                   new[] { 1087, 1088, 1089, 1090 }, new[] { 1091, 1092, 1093 },
                                   new[] { 1094, 1095, 1096, 1097 }, new[] { 1098, 1099, 1100 },
                                   new[] { 1101, 1102, 1103 }, new[] { 1104, 1105, 1106, 1107 },
                                   new[] { 1108, 1109, 1110, 1111 }, new[] { 1112, 1113, 1114, 1115 },
                                   new[] { 1116, 1117, 1118, 1119, 1120, 1121 }, new[] { 1122, 1123, 1124, 1125 },
                                   new[] { 1126, 1127, 1128, 1129 }, new[] { 1130, 1131, 1132, 1133, 1134 },
                                   new[] { 1135, 1136, 1137, 1138, 1139 }, new[] { 1140, 1141, 1142 },
                                   new[] { 1143, 1144 }, new[] { 1145, 1146, 1147, 1148 },
                                   new[] { 1149, 1150, 1151, 1152 }, new[] { 1153, 1154, 1155, 1156 },
                                   new[] { 1157, 1158, 1159, 1160, 1161 }, new[] { 1162, 1163, 1164, 1165 },
                                   new[] { 1166, 1167, 1168, 1169 }, new[] { 1170, 1171, 1172, 1173, 1174 },
                                   new[] { 1175, 1176, 1177, 1178, 1179 }, new[] { 1180, 1181, 1182, 1183, 1184 },
                                   new[] { 1185, 1186, 1187, 1188 }
                               };
                }
            }
        }
        private class VersePerDay90 : DailyPlanSchedule
        {
            public override int[][] Schedule
            {
                get
                {
                    return new[]
                               {
                                   new[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 },
                                   new[] { 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24 },
                                   new[] { 25, 26, 27, 28, 29, 30, 31, 32, 33, 34 },
                                   new[] { 35, 36, 37, 38, 39, 40, 41, 42, 43, 44 },
                                   new[] { 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57 },
                                   new[] { 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69 },
                                   new[] { 70, 71, 72, 73, 74, 75, 76, 77, 78, 79 },
                                   new[] { 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90 },
                                   new[] { 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102 },
                                   new[] { 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113 },
                                   new[] { 114, 115, 116, 117, 118, 119, 120 },
                                   new[] { 121, 122, 123, 124, 125, 126, 127, 128, 129, 130 },
                                   new[] { 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141 },
                                   new[] { 142, 143, 144, 145, 146, 147, 148, 149, 150 },
                                   new[] { 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161 },
                                   new[] { 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175 },
                                   new[] { 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187 },
                                   new[] { 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200 },
                                   new[] { 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212 },
                                   new[] { 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223 },
                                   new[] { 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237 },
                                   new[] { 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250 },
                                   new[] { 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262 },
                                   new[] { 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277 },
                                   new[] { 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288 },
                                   new[] { 289, 290, 291, 292, 293, 294, 295, 296, 297 },
                                   new[] { 298, 299, 300, 301, 302, 303, 304, 305, 306, 307 },
                                   new[] { 308, 309, 310, 311, 312, 313, 314, 315, 316, 317 },
                                   new[] { 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329 },
                                   new[] { 330, 331, 332, 333, 334, 335, 336, 337, 338, 339 },
                                   new[] { 340, 341, 342, 343, 344, 345, 346, 347, 348 },
                                   new[] { 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362 },
                                   new[] { 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376 },
                                   new[]
                                       { 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392 },
                                   new[] { 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404 },
                                   new[] { 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418 },
                                   new[] { 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430 },
                                   new[]
                                       { 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446 },
                                   new[] { 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461 },
                                   new[] { 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473 },
                                   new[]
                                       {
                                           474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489,
                                           490, 491, 492, 493, 494, 495
                                       },
                                   new[]
                                       {
                                           496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
                                           512, 513, 514, 515
                                       },
                                   new[]
                                       {
                                           516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531,
                                           532, 533, 534, 535, 536, 537, 538, 539, 540, 541
                                       },
                                   new[]
                                       { 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557 },
                                   new[]
                                       {
                                           558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573,
                                           574, 575, 576, 577, 578, 579
                                       },
                                   new[]
                                       { 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595 },
                                   new[]
                                       {
                                           596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611,
                                           612, 613, 614, 615
                                       },
                                   new[]
                                       {
                                           616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631,
                                           632, 633, 634
                                       },
                                   new[] { 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645 },
                                   new[] { 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657 },
                                   new[]
                                       {
                                           658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673,
                                           674, 675, 676
                                       },
                                   new[]
                                       {
                                           677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692,
                                           693
                                       },
                                   new[]
                                       {
                                           694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709,
                                           710, 711, 712
                                       },
                                   new[] { 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727 },
                                   new[]
                                       {
                                           728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743,
                                           744, 745, 746
                                       },
                                   new[] { 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760 },
                                   new[] { 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774 },
                                   new[] { 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789 },
                                   new[] { 790, 791, 792, 793, 794, 795, 796, 797, 798, 799 },
                                   new[] { 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814 },
                                   new[] { 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825 },
                                   new[] { 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838 },
                                   new[] { 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850 },
                                   new[] { 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863 },
                                   new[]
                                       {
                                           864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879,
                                           880, 881, 882, 883, 884
                                       },
                                   new[]
                                       {
                                           885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900,
                                           901, 902, 903, 904, 905, 906
                                       },
                                   new[]
                                       {
                                           907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922,
                                           923, 924, 925, 926, 927, 928, 929
                                       },
                                   new[] { 930, 931, 932, 933, 934, 935, 936, 937, 938, 939 },
                                   new[] { 940, 941, 942, 943, 944, 945, 946, 947, 948, 949 },
                                   new[] { 950, 951, 952, 953, 954, 955 },
                                   new[] { 956, 957, 958, 959, 960, 961, 962, 963, 964 },
                                   new[] { 965, 966, 967, 968, 969, 970, 971, 972 },
                                   new[] { 973, 974, 975, 976, 977, 978, 979 },
                                   new[] { 980, 981, 982, 983, 984, 985, 986 },
                                   new[] { 987, 988, 989, 990, 991, 992, 993, 994 },
                                   new[] { 995, 996, 997, 998, 999, 1000, 1001 },
                                   new[] { 1002, 1003, 1004, 1005, 1006, 1007, 1008 },
                                   new[] { 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018 },
                                   new[] { 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027 },
                                   new[] { 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037 },
                                   new[] { 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047 },
                                   new[] { 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060 },
                                   new[]
                                       {
                                           1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073,
                                           1074
                                       },
                                   new[]
                                       {
                                           1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087,
                                           1088
                                       },
                                   new[]
                                       {
                                           1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101,
                                           1102, 1103
                                       },
                                   new[]
                                       {
                                           1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116,
                                           1117, 1118, 1119
                                       },
                                   new[]
                                       {
                                           1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132,
                                           1133, 1134, 1135, 1136, 1137, 1138
                                       },
                                   new[]
                                       {
                                           1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151,
                                           1152
                                       },
                                   new[]
                                       {
                                           1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165,
                                           1166, 1167, 1168, 1169
                                       },
                                   new[]
                                       {
                                           1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182,
                                           1183, 1184, 1185, 1186, 1187, 1188
                                       }
                               };
                }
            }
        }
        private class VersePerDayNtPvPs : DailyPlanSchedule
        {
            public override int[][] Schedule
            {
                get
                {
                    return new[]
                               {
                                   new[] { 929 }, new[] { 930, 931 }, new[] { 932 }, new[] { 933 }, new[] { 934 },
                                   new[] { 935 }, new[] { 936 }, new[] { 937 }, new[] { 938 }, new[] { 939 },
                                   new[] { 940 }, new[] { 941 }, new[] { 942 }, new[] { 943 }, new[] { 944 },
                                   new[] { 945 }, new[] { 946 }, new[] { 947 }, new[] { 948 }, new[] { 949 },
                                   new[] { 950 }, new[] { 951 }, new[] { 952 }, new[] { 953 }, new[] { 954 },
                                   new[] { 955 }, new[] { 956 }, new[] { 957 }, new[] { 958 }, new[] { 959 },
                                   new[] { 960 }, new[] { 961 }, new[] { 962 }, new[] { 963 }, new[] { 964 },
                                   new[] { 965 }, new[] { 966 }, new[] { 967 }, new[] { 968 }, new[] { 969 },
                                   new[] { 970 }, new[] { 971 }, new[] { 972 }, new[] { 973 }, new[] { 974 },
                                   new[] { 975 }, new[] { 976 }, new[] { 977 }, new[] { 978 }, new[] { 979 },
                                   new[] { 980 }, new[] { 981 }, new[] { 982 }, new[] { 983 }, new[] { 984 },
                                   new[] { 985 }, new[] { 986 }, new[] { 987 }, new[] { 988 }, new[] { 989 },
                                   new[] { 990 }, new[] { 991 }, new[] { 992 }, new[] { 993 }, new[] { 994 },
                                   new[] { 995 }, new[] { 996 }, new[] { 997 }, new[] { 998 }, new[] { 999 },
                                   new[] { 1000 }, new[] { 1001 }, new[] { 1002 }, new[] { 1003 }, new[] { 1004 },
                                   new[] { 1005 }, new[] { 1006 }, new[] { 1007 }, new[] { 1008 }, new[] { 1009 },
                                   new[] { 1010 }, new[] { 1011 }, new[] { 1012 }, new[] { 1013 }, new[] { 1014 },
                                   new[] { 1015 }, new[] { 1016 }, new[] { 1017 }, new[] { 1018 }, new[] { 1019 },
                                   new[] { 1020 }, new[] { 1021 }, new[] { 1022 }, new[] { 1023 }, new[] { 1024 },
                                   new[] { 1025 }, new[] { 1026 }, new[] { 1027 }, new[] { 1028 }, new[] { 1029 },
                                   new[] { 1030 }, new[] { 1031 }, new[] { 1032 }, new[] { 1033 }, new[] { 1034 },
                                   new[] { 1035 }, new[] { 1036 }, new[] { 1037 }, new[] { 1038 }, new[] { 1039 },
                                   new[] { 1040 }, new[] { 1041 }, new[] { 1042 }, new[] { 1043 }, new[] { 1044 },
                                   new[] { 1045 }, new[] { 1046 }, new[] { 1047 }, new[] { 1048 }, new[] { 1049 },
                                   new[] { 1050 }, new[] { 1051 }, new[] { 1052 }, new[] { 1053 }, new[] { 1054 },
                                   new[] { 1055 }, new[] { 1056 }, new[] { 1057 }, new[] { 1058 }, new[] { 1059 },
                                   new[] { 1060 }, new[] { 1061 }, new[] { 1062 }, new[] { 1063 }, new[] { 1064 },
                                   new[] { 1065 }, new[] { 1066 }, new[] { 1067 }, new[] { 1068 }, new[] { 1069 },
                                   new[] { 1070 }, new[] { 1071 }, new[] { 1072 }, new[] { 1073 }, new[] { 1074 },
                                   new[] { 1075 }, new[] { 1076 }, new[] { 1077 }, new[] { 1078 }, new[] { 1079 },
                                   new[] { 1080 }, new[] { 1081 }, new[] { 1082 }, new[] { 1083 }, new[] { 1084 },
                                   new[] { 1085 }, new[] { 1086 }, new[] { 1087 }, new[] { 1088 }, new[] { 1089 },
                                   new[] { 1090 }, new[] { 1091 }, new[] { 1092 }, new[] { 1093 }, new[] { 1094 },
                                   new[] { 1095 }, new[] { 1096 }, new[] { 1097 }, new[] { 1098 }, new[] { 1099 },
                                   new[] { 1100 }, new[] { 1101 }, new[] { 1102 }, new[] { 1103 }, new[] { 1104 },
                                   new[] { 1105 }, new[] { 1106 }, new[] { 1107 }, new[] { 1108 }, new[] { 1109 },
                                   new[] { 1110 }, new[] { 1111 }, new[] { 1112 }, new[] { 1113 }, new[] { 1114 },
                                   new[] { 1115 }, new[] { 1116 }, new[] { 1117 }, new[] { 1118 }, new[] { 1119 },
                                   new[] { 1120 }, new[] { 1121 }, new[] { 1122 }, new[] { 1123 }, new[] { 1124 },
                                   new[] { 1125 }, new[] { 1126 }, new[] { 1127 }, new[] { 1128 }, new[] { 1129 },
                                   new[] { 1130 }, new[] { 1131 }, new[] { 1132 }, new[] { 1133 }, new[] { 1134 },
                                   new[] { 1135 }, new[] { 1136 }, new[] { 1137 }, new[] { 1138 }, new[] { 1139 },
                                   new[] { 1140 }, new[] { 1141 }, new[] { 1142 }, new[] { 1143 }, new[] { 1144 },
                                   new[] { 1145 }, new[] { 1146 }, new[] { 1147 }, new[] { 1148 }, new[] { 1149 },
                                   new[] { 1150 }, new[] { 1151 }, new[] { 1152 }, new[] { 1153 }, new[] { 1154 },
                                   new[] { 1155 }, new[] { 1156 }, new[] { 1157 }, new[] { 1158 }, new[] { 1159 },
                                   new[] { 1160 }, new[] { 1161 }, new[] { 1162 }, new[] { 1163 }, new[] { 1164 },
                                   new[] { 1165 }, new[] { 1166 }, new[] { 1167 }, new[] { 1168 }, new[] { 1169 },
                                   new[] { 1170 }, new[] { 1171 }, new[] { 1172 }, new[] { 1173 }, new[] { 1174, 1175 },
                                   new[] { 1176, 1177 }, new[] { 1178, 1179 }, new[] { 1180, 1181 }, new[] { 1182 },
                                   new[] { 1183, 1184 }, new[] { 1185, 1186 }, new[] { 1187 }, new[] { 1188 },
                                   new[] { 478, 479 }, new[] { 480, 481 }, new[] { 482 }, new[] { 483 }, new[] { 484 },
                                   new[] { 485, 486 }, new[] { 487 }, new[] { 488 }, new[] { 489 }, new[] { 490, 491 },
                                   new[] { 492 }, new[] { 493 }, new[] { 494, 495 }, new[] { 496 }, new[] { 497 },
                                   new[] { 498 }, new[] { 499 }, new[] { 500 }, new[] { 501, 502, 503 }, new[] { 504 },
                                   new[] { 505 }, new[] { 506 }, new[] { 507 }, new[] { 508 }, new[] { 509, 510 },
                                   new[] { 511 }, new[] { 512 }, new[] { 513 }, new[] { 514 }, new[] { 515 },
                                   new[] { 516 }, new[] { 517 }, new[] { 518 }, new[] { 519, 520 },
                                   new[] { 521, 522, 523 }, new[] { 524, 525, 526 }, new[] { 527, 528 },
                                   new[] { 529, 530, 531 }, new[] { 532, 533, 534, 535 }, new[] { 536 }, new[] { 537 },
                                   new[] { 538, 539, 540 }, new[] { 541 }, new[] { 542, 543, 544 }, new[] { 545, 546 },
                                   new[] { 547, 548 }, new[] { 549, 550 }, new[] { 551, 552 }, new[] { 553 },
                                   new[] { 554, 555 }, new[] { 556 }, new[] { 557 }, new[] { 558, 559 },
                                   new[] { 560, 561, 562 }, new[] { 563, 564 }, new[] { 565, 566 }, new[] { 567, 568 },
                                   new[] { 569, 570 }, new[] { 571, 572, 573 }, new[] { 574, 575 }, new[] { 576, 577 },
                                   new[] { 578, 579, 580 }, new[] { 581, 582, 583 }, new[] { 584, 585 },
                                   new[] { 586, 587 }, new[] { 588 }, new[] { 589 }, new[] { 590, 591 }, new[] { 592 },
                                   new[] { 593, 594 }, new[] { 595, 596 }, new[] { 597 }, new[] { 598 }, new[] { 599 },
                                   new[] { 600, 601 }, new[] { 602, 603 }, new[] { 604, 605 }, new[] { 606, 607 },
                                   new[] { 608 }, new[] { 609 }, new[] { 610, 611 }, new[] { 612, 613 },
                                   new[] { 614, 615, 616 }, new[] { 617, 618, 619, 620 }, new[] { 621 }, new[] { 622 },
                                   new[] { 623 }, new[] { 624 }, new[] { 625 }, new[] { 626 }, new[] { 627 },
                                   new[] { 628 }, new[] { 629, 630 }, new[] { 631, 632, 633 }, new[] { 634, 635 },
                                   new[] { 636, 637 }, new[] { 638 }, new[] { 639 }, new[] { 640 }, new[] { 641 },
                                   new[] { 642 }, new[] { 643 }, new[] { 644, 645 }, new[] { 646, 647, 648, 649 },
                                   new[] { 650, 651, 652, 653 }, new[] { 654, 655 }, new[] { 656, 657 },
                                   new[] { 658, 659 }, new[] { 660, 661, 662 }, new[] { 663, 664 }, new[] { 665, 666 },
                                   new[] { 667, 668, 669 }
                               };
                }
            }
        }
        private class VersePerDayOt180 : DailyPlanSchedule
        {
            public override int[][] Schedule
            {
                get
                {
                    return new[]
                               {
                                   new[] { 0, 1, 2, 3, 4, 929, 930 }, new[] { 5, 6, 7, 8, 9, 931, 932 },
                                   new[] { 10, 11, 12, 13, 14, 933 }, new[] { 15, 16, 17, 18, 19, 934 },
                                   new[] { 20, 21, 22, 23, 935, 936 }, new[] { 24, 25, 26, 937 },
                                   new[] { 27, 28, 29, 30, 938 }, new[] { 31, 32, 33, 34, 939 }, new[] { 35, 36, 37, 940 }
                                   , new[] { 38, 39, 40, 41, 941 }, new[] { 42, 43, 44, 45, 942 },
                                   new[] { 46, 47, 48, 49, 50, 943 }, new[] { 51, 52, 53, 54, 55, 944, 945 },
                                   new[] { 56, 57, 58, 59, 946 }, new[] { 60, 61, 62, 63, 947, 948 },
                                   new[] { 64, 65, 66, 67, 68, 949 }, new[] { 69, 70, 71, 72, 73, 950 },
                                   new[] { 74, 75, 76, 77, 951 }, new[] { 78, 79, 80, 952 }, new[] { 81, 82, 83, 84, 953 }
                                   , new[] { 85, 86, 87, 88, 954 }, new[] { 89, 90, 91, 92, 93 },
                                   new[] { 94, 95, 96, 97, 955 }, new[] { 98, 99, 100, 101, 102, 956 },
                                   new[] { 103, 104, 105, 957 }, new[] { 106, 107, 108, 109, 958 },
                                   new[] { 110, 111, 112, 113, 959, 960 }, new[] { 114, 115, 116, 961 },
                                   new[] { 117, 118, 119, 962 }, new[] { 120, 121, 122, 963 },
                                   new[] { 123, 124, 125, 964 }, new[] { 126, 127, 128, 129, 965 },
                                   new[] { 130, 131, 132, 966 }, new[] { 133, 134, 135, 136, 137, 967 },
                                   new[] { 138, 139, 140, 141, 968 }, new[] { 142, 143, 144, 145, 969 },
                                   new[] { 146, 147, 148, 970 }, new[] { 149, 150, 151, 152 },
                                   new[] { 153, 154, 155, 971 }, new[] { 156, 157, 158, 159, 972 },
                                   new[] { 160, 161, 162, 163, 164, 973 }, new[] { 165, 166, 167, 168, 169, 170, 974 },
                                   new[] { 171, 172, 173, 174, 175, 975 }, new[] { 176, 177, 178, 179, 180, 976 },
                                   new[] { 181, 182, 183, 184, 977 }, new[] { 185, 186, 187, 188, 189, 978 },
                                   new[] { 190, 191, 192, 193, 194, 979 }, new[] { 195, 196, 197, 198, 199, 980 },
                                   new[] { 200, 201, 202, 203, 981 }, new[] { 204, 205, 206, 207 },
                                   new[] { 208, 209, 210, 211, 212, 982 }, new[] { 213, 214, 215, 216, 983 },
                                   new[] { 217, 218, 219, 984 }, new[] { 220, 221, 222, 223, 224, 225, 985 },
                                   new[] { 226, 227, 228, 229, 230, 986 }, new[] { 231, 232, 233, 234, 235, 987 },
                                   new[] { 236, 237, 238, 239, 240, 988, 989 },
                                   new[] { 241, 242, 243, 244, 245, 246, 990 }, new[] { 247, 248, 249, 250, 991 },
                                   new[] { 251, 252, 253, 254, 992 }, new[] { 255, 256, 257, 258, 993 },
                                   new[] { 259, 260, 261, 262, 263, 264, 994 }, new[] { 265, 266, 267, 268, 269 },
                                   new[] { 270, 271, 272, 273, 274, 995 }, new[] { 275, 276, 277, 278, 279, 996 },
                                   new[] { 280, 281, 282, 283, 997 }, new[] { 284, 285, 286, 287, 998 },
                                   new[] { 288, 289, 290, 291, 999 }, new[] { 292, 293, 294, 1000 },
                                   new[] { 295, 296, 297, 1001 }, new[] { 298, 299, 300, 301, 1002 },
                                   new[] { 302, 303, 304 }, new[] { 305, 306, 307, 308, 1003 },
                                   new[] { 309, 310, 311, 312, 1004 }, new[] { 313, 314, 315, 316, 1005 },
                                   new[] { 317, 318, 319, 320, 321, 1006 }, new[] { 322, 323, 324, 325, 1007 },
                                   new[] { 326, 327, 328, 329, 1008 }, new[] { 330, 331, 332, 333, 334, 1009 },
                                   new[] { 335, 336, 337, 338, 1010 }, new[] { 339, 340, 341, 1011 },
                                   new[] { 342, 343, 1012, 1013 }, new[] { 344, 345, 346, 347, 1014 },
                                   new[] { 348, 349, 350, 351, 1015 }, new[] { 352, 353, 354, 355, 356, 357, 1016, 1017 },
                                   new[] { 358, 359, 360, 361, 362, 1018 }, new[] { 363, 364, 365, 366, 1019 },
                                   new[] { 367, 368, 369, 370, 371, 372, 1020, 1021 },
                                   new[] { 373, 374, 375, 376, 377, 378, 1022 },
                                   new[] { 379, 380, 381, 382, 383, 384, 1023 },
                                   new[] { 385, 386, 387, 388, 389, 390, 1024 }, new[] { 391, 392, 393, 394, 395, 1025 },
                                   new[] { 396, 397, 398, 399, 400, 1026 }, new[] { 401, 402, 403, 404, 1027 },
                                   new[] { 405, 406, 407, 408, 409, 410, 1028 },
                                   new[] { 411, 412, 413, 414, 415, 1029, 1030 }, new[] { 416, 417, 418, 419, 1031 },
                                   new[] { 420, 421, 422, 423, 1032 }, new[] { 424, 425, 426, 1033 },
                                   new[] { 427, 428, 429, 430, 431, 432, 433, 434, 1034 },
                                   new[] { 435, 436, 437, 438, 439, 440, 1035, 1036 },
                                   new[] { 441, 442, 443, 444, 445, 446, 1037 }, new[] { 447, 448, 449, 450, 1038 },
                                   new[] { 451, 452, 453, 454, 455, 456, 1039 },
                                   new[] { 457, 458, 459, 460, 461, 462, 1040, 1041 },
                                   new[] { 463, 464, 465, 466, 1042, 1043 }, new[] { 467, 468, 469, 470, 471, 1044 },
                                   new[] { 472, 473, 474, 475, 1045 },
                                   new[] { 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 1046 },
                                   new[] { 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 1047, 1048 },
                                   new[] { 496, 497, 498, 499, 500, 501, 502, 1049 },
                                   new[] { 503, 504, 505, 506, 507, 508, 509, 510, 511, 1050, 1051 },
                                   new[] { 512, 513, 514, 515, 516, 1052, 1053 },
                                   new[] { 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 1054 },
                                   new[] { 527, 528, 529, 530, 531, 532, 533, 534, 535, 1055, 1056 },
                                   new[] { 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 1057, 1058 },
                                   new[] { 546, 547, 548, 549, 550, 1059, 1060 }, new[] { 551, 552, 553, 554, 555, 1061 },
                                   new[] { 556, 557, 558, 559, 560, 561, 562, 563, 564, 1062, 1063 },
                                   new[] { 565, 566, 567, 568, 569, 570, 1064, 1065 },
                                   new[] { 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 1066, 1067 },
                                   new[] { 581, 582, 583, 1068, 1069 },
                                   new[] { 584, 585, 586, 587, 588, 589, 590, 1070, 1071 },
                                   new[] { 591, 592, 593, 594, 595, 1072 }, new[] { 596, 1073, 1074 },
                                   new[]
                                       {
                                           597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612,
                                           1075
                                       },
                                   new[] { 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 1076 },
                                   new[] { 623, 624, 625, 626, 627, 628, 629, 1077 },
                                   new[] { 630, 631, 632, 633, 634, 1078, 1079 },
                                   new[] { 635, 636, 637, 638, 1080, 1081, 1082 },
                                   new[] { 639, 640, 641, 642, 1083, 1084 },
                                   new[] { 643, 644, 645, 646, 647, 1085, 1086, 1087 },
                                   new[] { 648, 649, 650, 651, 1088, 1089 }, new[] { 652, 653, 654, 655, 1090, 1091 },
                                   new[] { 656, 657, 658, 659, 660, 1092, 1093 },
                                   new[] { 661, 662, 663, 664, 665, 666, 667, 1094 },
                                   new[] { 668, 669, 670, 671, 672, 673, 674, 675, 1095, 1096 },
                                   new[] { 676, 677, 678, 679, 680, 681, 682, 1097, 1098 },
                                   new[] { 683, 684, 685, 686, 687, 688, 1099, 1100 },
                                   new[] { 689, 690, 691, 692, 693, 694, 695, 696, 1101 },
                                   new[] { 697, 698, 699, 700, 701, 702, 703, 1102, 1103 },
                                   new[] { 704, 705, 706, 707, 708, 709, 1104, 1105 },
                                   new[] { 710, 711, 712, 713, 714, 715, 1106, 1107 },
                                   new[] { 716, 717, 718, 719, 720, 721, 1108 },
                                   new[] { 722, 723, 724, 725, 726, 1109, 1110 },
                                   new[] { 727, 728, 729, 730, 731, 732, 733, 734, 735, 1111, 1112, 1113 },
                                   new[] { 736, 737, 738, 739, 740, 741, 742, 1114, 1115 },
                                   new[] { 743, 744, 745, 746, 747, 1116, 1117, 1118 },
                                   new[] { 748, 749, 750, 751, 1119, 1120 },
                                   new[] { 752, 753, 754, 755, 756, 757, 1121, 1122, 1123 },
                                   new[] { 758, 759, 760, 761, 762, 763, 1124, 1125 },
                                   new[] { 764, 765, 766, 767, 768, 1126, 1127 },
                                   new[] { 769, 770, 771, 772, 773, 1128, 1129 },
                                   new[] { 774, 775, 776, 777, 1130, 1131, 1132 },
                                   new[] { 778, 779, 780, 781, 782, 783, 1133, 1134 },
                                   new[] { 784, 785, 786, 787, 788, 789, 790, 1135, 1136, 1137 },
                                   new[] { 791, 792, 793, 794, 1138, 1139 }, new[] { 795, 796, 1140, 1141 },
                                   new[] { 797, 798, 799, 800, 1142, 1143 },
                                   new[] { 801, 802, 803, 804, 805, 806, 807, 1144 },
                                   new[] { 808, 809, 810, 811, 812, 813, 1145 }, new[] { 814, 815, 816, 817, 1146, 1147 },
                                   new[] { 818, 819, 820, 821, 822, 1148, 1149 }, new[] { 823, 824, 825, 1150, 1151 },
                                   new[] { 826, 827, 828, 829, 830, 831, 1152, 1153 },
                                   new[] { 832, 833, 834, 835, 1154, 1155, 1156 },
                                   new[] { 836, 837, 838, 839, 840, 1157, 1158 }, new[] { 841, 842, 843, 844, 1159, 1160 }
                                   , new[] { 845, 846, 847, 848, 849, 1161, 1162 },
                                   new[] { 850, 851, 852, 853, 1163, 1164, 1165 }, new[] { 854, 855, 856, 857, 1166 },
                                   new[] { 858, 859, 860, 861, 862, 863, 1167, 1168 },
                                   new[] { 864, 865, 866, 867, 868, 869, 870, 871, 872, 1169, 1170, 1171 },
                                   new[] { 873, 874, 875, 876, 877, 878, 879, 1172, 1173, 1174 },
                                   new[] { 880, 881, 882, 883, 884, 885, 886, 887, 1175, 1176, 1177 },
                                   new[] { 888, 889, 890, 891, 892, 893, 894, 895, 896, 1178, 1179 },
                                   new[] { 897, 898, 899, 900, 901, 902, 903, 904, 1180, 1181, 1182 },
                                   new[] { 905, 906, 907, 908, 909, 910, 911, 1183, 1184 },
                                   new[] { 912, 913, 914, 915, 916, 917, 918, 919, 1185, 1186, 1187 },
                                   new[] { 920, 921, 922, 923, 924, 925, 926, 927, 928, 1188 }
                               };
                }
            }
        }
        private class VersePerDayOt365 : DailyPlanSchedule
        {
            public override int[][] Schedule
            {
                get
                {
                    return new[]
                               {
                                   new[] { 0, 1, 929 }, new[] { 2, 3, 4, 930 }, new[] { 5, 6, 931 },
                                   new[] { 7, 8, 9, 932 }, new[] { 10, 11, 933 }, new[] { 12, 13, 14 },
                                   new[] { 15, 16, 17, 934 }, new[] { 18, 19, 935 }, new[] { 20, 21 },
                                   new[] { 22, 23, 936 }, new[] { 24, 937 }, new[] { 25, 26 }, new[] { 27, 28, 938 },
                                   new[] { 29 }, new[] { 30, 31, 939 }, new[] { 32, 33, 940 }, new[] { 34, 35 },
                                   new[] { 36, 37 }, new[] { 38, 39, 941 }, new[] { 40, 41 }, new[] { 42, 942 },
                                   new[] { 43, 44 }, new[] { 45, 46, 943 }, new[] { 47, 48, 49 }, new[] { 50, 51, 944 },
                                   new[] { 52, 53, 54, 945 }, new[] { 55, 56, 946 }, new[] { 57, 58 },
                                   new[] { 59, 60, 61, 947 }, new[] { 62, 63, 948 }, new[] { 64, 65 },
                                   new[] { 66, 67, 949 }, new[] { 68, 69, 70 }, new[] { 71, 72, 950 }, new[] { 73, 74 },
                                   new[] { 75, 76, 951 }, new[] { 77 }, new[] { 78, 79, 952 }, new[] { 80, 81 },
                                   new[] { 82, 83, 953 }, new[] { 84, 85 }, new[] { 86, 87, 954 }, new[] { 88, 89 },
                                   new[] { 90, 91, 92 }, new[] { 93, 94 }, new[] { 95, 96, 955 }, new[] { 97, 98 },
                                   new[] { 99, 100 }, new[] { 101, 102, 956 }, new[] { 103, 957 }, new[] { 104, 105 },
                                   new[] { 106, 107, 108, 958 }, new[] { 109, 110, 959 }, new[] { 111, 112 },
                                   new[] { 113, 960 }, new[] { 114, 115, 961 }, new[] { 116 }, new[] { 117, 118, 962 },
                                   new[] { 119 }, new[] { 120, 121 }, new[] { 122, 963 }, new[] { 123 },
                                   new[] { 124, 125, 964 }, new[] { 126, 127, 965 }, new[] { 128, 129 },
                                   new[] { 130, 131 }, new[] { 132, 966 }, new[] { 133, 134, 135 },
                                   new[] { 136, 137, 967 }, new[] { 138, 139 }, new[] { 140, 141, 968 },
                                   new[] { 142, 143 }, new[] { 144, 145, 969 }, new[] { 146, 147, 970 }, new[] { 148 },
                                   new[] { 149 }, new[] { 150, 151 }, new[] { 152, 153, 971 }, new[] { 154, 155 },
                                   new[] { 156, 157, 972 }, new[] { 158, 159, 973 }, new[] { 160, 161, 162 },
                                   new[] { 163, 164 }, new[] { 165, 166, 974 }, new[] { 167, 168, 169 },
                                   new[] { 170, 171, 172 }, new[] { 173, 174, 175, 975 }, new[] { 176, 177, 178, 976 },
                                   new[] { 179, 180 }, new[] { 181 }, new[] { 182, 183, 977 }, new[] { 184, 185, 978 },
                                   new[] { 186, 187, 188 }, new[] { 189, 190, 191, 192 }, new[] { 193, 194, 979 },
                                   new[] { 195, 196 }, new[] { 197, 198, 980 }, new[] { 199, 200 },
                                   new[] { 201, 202, 981 }, new[] { 203, 204, 205 }, new[] { 206, 207 },
                                   new[] { 208, 209, 982 }, new[] { 210, 211 }, new[] { 212, 213, 983 },
                                   new[] { 214, 215 }, new[] { 216, 217 }, new[] { 218, 219, 984 }, new[] { 220, 221 },
                                   new[] { 222, 223, 985 }, new[] { 224, 225, 226 }, new[] { 227, 228, 229, 986 },
                                   new[] { 230 }, new[] { 231, 232, 233, 987 }, new[] { 234, 235, 236, 988 },
                                   new[] { 237, 238, 989 }, new[] { 239, 240, 241 }, new[] { 242, 243, 244, 990 },
                                   new[] { 245, 246, 247 }, new[] { 248, 249, 991 }, new[] { 250, 251 },
                                   new[] { 252, 992 }, new[] { 253, 254 }, new[] { 255, 256, 257, 993 },
                                   new[] { 258, 259 }, new[] { 260, 261, 994 }, new[] { 262, 263, 264, 265 },
                                   new[] { 266, 267 }, new[] { 268, 269, 995 }, new[] { 270, 271, 272 },
                                   new[] { 273, 274, 275 }, new[] { 276, 277, 278, 996 }, new[] { 279, 280 },
                                   new[] { 281, 997 }, new[] { 282, 283, 284 }, new[] { 285 },
                                   new[] { 286, 287, 288, 998 }, new[] { 289, 999 }, new[] { 290, 291 },
                                   new[] { 292, 1000 }, new[] { 293, 294 }, new[] { 295, 296, 1001 }, new[] { 297 },
                                   new[] { 298, 299, 1002 }, new[] { 300, 301 }, new[] { 302 }, new[] { 303, 304 },
                                   new[] { 305, 306, 1003 }, new[] { 307, 308 }, new[] { 309, 310, 1004 },
                                   new[] { 311, 312 }, new[] { 313, 314 }, new[] { 315, 316, 1005 }, new[] { 317, 318 },
                                   new[] { 319, 320, 1006 }, new[] { 321, 322, 1007 }, new[] { 323, 324, 325 },
                                   new[] { 326, 327 }, new[] { 328, 329, 1008 }, new[] { 330, 331 },
                                   new[] { 332, 333, 1009 }, new[] { 334, 335 }, new[] { 336, 337, 338, 1010 },
                                   new[] { 339 }, new[] { 340, 1011 }, new[] { 341, 342, 1012 }, new[] { 343, 1013 },
                                   new[] { 344, 345, 1014 }, new[] { 346 }, new[] { 347, 348, 1015 }, new[] { 349, 350 },
                                   new[] { 351, 352, 353, 1016 }, new[] { 354, 355 }, new[] { 356, 357, 358, 1017 },
                                   new[] { 359, 360, 361, 1018 }, new[] { 362, 363, 1019 }, new[] { 364, 365 },
                                   new[] { 366, 367, 368, 1020 }, new[] { 369, 370, 371, 1021 }, new[] { 372, 373 },
                                   new[] { 374, 375, 376, 1022 }, new[] { 377, 378, 379 },
                                   new[] { 380, 381, 382, 383, 1023 }, new[] { 384, 385, 386, 1024 },
                                   new[] { 387, 388, 389 }, new[] { 390, 391, 1025 }, new[] { 392, 393, 394 },
                                   new[] { 395, 396, 1026 }, new[] { 397, 398, 399 }, new[] { 400, 401, 1027 },
                                   new[] { 402, 403 }, new[] { 404, 405, 1028 }, new[] { 406, 407, 408 },
                                   new[] { 409, 410, 1029 }, new[] { 411, 412, 413, 1030 }, new[] { 414, 415 },
                                   new[] { 416, 417, 418, 1031 }, new[] { 419 }, new[] { 420, 421, 1032 },
                                   new[] { 422, 423 }, new[] { 424, 425, 1033 }, new[] { 426, 427, 1034 },
                                   new[] { 428, 429, 430, 431, 432 }, new[] { 433, 434, 435, 1035 },
                                   new[] { 436, 437, 438, 1036 }, new[] { 439, 440, 441 }, new[] { 442, 443, 1037 },
                                   new[] { 444, 445, 446 }, new[] { 447, 448, 449, 1038 }, new[] { 450, 451 },
                                   new[] { 452, 453, 454, 1039 }, new[] { 455, 456, 1040 }, new[] { 457, 458 },
                                   new[] { 459, 460, 461, 462, 1041 }, new[] { 463, 464, 465, 1042 }, new[] { 466, 1043 },
                                   new[] { 467, 468, 469 }, new[] { 470, 471, 1044 }, new[] { 472, 473 },
                                   new[] { 474, 475, 1045 }, new[] { 476, 477, 478, 479, 1046 },
                                   new[] { 480, 481, 482, 483, 484, 485, 1047 }, new[] { 486, 487, 488, 489, 490 },
                                   new[] { 491, 492, 493, 494, 495, 1048 }, new[] { 496, 497, 498, 1049 },
                                   new[] { 499, 500, 501, 502, 1050 }, new[] { 503, 504, 505, 506, 507, 1051 },
                                   new[] { 508, 509, 510, 1052 }, new[] { 511, 512, 513 }, new[] { 514, 515, 516, 1053 },
                                   new[] { 517, 518, 519, 520, 521, 1054 }, new[] { 522, 523, 524, 525 },
                                   new[] { 526, 527, 528, 529, 1055 }, new[] { 530, 531, 532, 533, 534, 1056 },
                                   new[] { 535, 536, 537, 538, 539, 1057 }, new[] { 540, 541, 542, 543, 544, 1058 },
                                   new[] { 545, 546, 1059 }, new[] { 547, 548, 549, 1060 }, new[] { 550, 551, 552, 553 },
                                   new[] { 554, 555, 1061 }, new[] { 556, 557, 1062 },
                                   new[] { 558, 559, 560, 561, 562, 1063 }, new[] { 563, 564, 565, 566, 1064 },
                                   new[] { 567, 568, 1065 }, new[] { 569, 570, 571, 572, 573, 1066 },
                                   new[] { 574, 575, 576, 577, 578, 579, 1067 }, new[] { 580, 581, 1068 },
                                   new[] { 582, 1069 }, new[] { 583, 584, 1070 }, new[] { 585, 586, 587, 1071 },
                                   new[] { 588, 589, 590, 591, 592 }, new[] { 593, 594, 595, 1072 }, new[] { 596, 1073 },
                                   new[] { 597 }, new[] { 598, 599, 600, 601, 1074, 1075 },
                                   new[] { 602, 603, 604, 605, 606, 607, 608, 609, 610 },
                                   new[] { 611, 612, 613, 614, 615, 1076 }, new[] { 616, 617, 618, 619 },
                                   new[] { 620, 621, 622, 623, 624 }, new[] { 625, 626, 627, 628, 1077 },
                                   new[] { 629, 630, 1078 }, new[] { 631, 632, 1079 }, new[] { 633, 634, 1080 },
                                   new[] { 635, 636, 637, 1081 }, new[] { 638, 639, 1082 }, new[] { 640, 641, 1083 },
                                   new[] { 642, 643, 1084, 1085 }, new[] { 644, 645, 1086 }, new[] { 646, 647, 1087 },
                                   new[] { 648, 649, 650, 1088 }, new[] { 651, 1089 }, new[] { 652, 653, 654, 1090 },
                                   new[] { 655, 656, 1091 }, new[] { 657, 658, 1092 }, new[] { 659, 660, 661, 1093 },
                                   new[] { 662, 663, 664, 1094 }, new[] { 665, 666, 667, 668 },
                                   new[] { 669, 670, 671, 672, 1095 }, new[] { 673, 674, 675, 676, 1096 },
                                   new[] { 677, 678, 679, 1097 }, new[] { 680, 681, 682, 683, 1098 },
                                   new[] { 684, 685, 686, 1099 }, new[] { 687, 688, 1100 },
                                   new[] { 689, 690, 691, 692, 1101 }, new[] { 693, 694, 695, 696 },
                                   new[] { 697, 698, 699, 700, 1102 }, new[] { 701, 702, 703, 1103 },
                                   new[] { 704, 705, 706, 1104 }, new[] { 707, 708, 709, 1105 },
                                   new[] { 710, 711, 712, 713, 1106 }, new[] { 714, 715, 1107 }, new[] { 716, 717, 718 },
                                   new[] { 719, 720, 721, 1108 }, new[] { 722, 723, 1109 }, new[] { 724, 725, 726, 1110 },
                                   new[] { 727, 728, 729, 730, 1111, 1112 }, new[] { 731, 732, 733, 734, 1113 },
                                   new[] { 735, 736, 737, 738, 1114 }, new[] { 739, 740, 741, 742, 1115 },
                                   new[] { 743, 744, 745, 1116, 1117 }, new[] { 746, 747, 1118 }, new[] { 748, 749, 1119 }
                                   , new[] { 750, 751, 1120 }, new[] { 752, 753, 754, 1121, 1122 },
                                   new[] { 755, 756, 757, 1123 }, new[] { 758, 759, 1124 }, new[] { 760, 761, 762, 1125 },
                                   new[] { 763, 764, 765, 766, 1126 }, new[] { 767, 768, 1127 }, new[] { 769, 770, 1128 },
                                   new[] { 771, 772, 773, 1129 }, new[] { 774, 775, 1130, 1131 }, new[] { 776, 777, 1132 }
                                   , new[] { 778, 779, 1133 }, new[] { 780, 781, 782, 1134 },
                                   new[] { 783, 784, 785, 1135 }, new[] { 786, 787, 788, 1136 },
                                   new[] { 789, 790, 791, 792, 1137, 1138 }, new[] { 793, 1139 }, new[] { 794, 1140 },
                                   new[] { 795, 796, 1141 }, new[] { 797, 798, 1142 }, new[] { 799 },
                                   new[] { 800, 801, 802, 1143 }, new[] { 803, 804, 805 }, new[] { 806, 807, 808, 1144 },
                                   new[] { 809, 810, 811, 812, 1145 }, new[] { 813, 814, 1146 },
                                   new[] { 815, 816, 817, 1147 }, new[] { 818, 819 }, new[] { 820, 821, 1148, 1149 },
                                   new[] { 822, 823, 1150 }, new[] { 824, 1151 }, new[] { 825, 826, 827, 1152 },
                                   new[] { 828, 829, 1153 }, new[] { 830, 831, 832, 1154 }, new[] { 833, 834, 1155 },
                                   new[] { 835, 836, 1156 }, new[] { 837, 838, 839, 1157 }, new[] { 840, 841, 1158 },
                                   new[] { 842, 843, 1159, 1160 }, new[] { 844, 845 }, new[] { 846, 847, 1161 },
                                   new[] { 848, 849, 850, 1162 }, new[] { 851, 1163 }, new[] { 852, 853, 1164, 1165 },
                                   new[] { 854, 855, 1166 }, new[] { 856, 857, 858, 1167 }, new[] { 859, 860, 1168 },
                                   new[] { 861, 862, 863, 864, 1169 }, new[] { 865, 866, 867, 868, 1170 },
                                   new[] { 869, 870, 871, 872, 873, 1171 }, new[] { 874, 875, 876, 1172, 1173 },
                                   new[] { 877, 878, 879, 1174 }, new[] { 880, 881, 882, 883, 1175 },
                                   new[] { 884, 885, 886, 887, 1176, 1177 }, new[] { 888, 889, 890, 891, 892, 1178 },
                                   new[] { 893, 894, 895, 896, 1179 }, new[] { 897, 898, 899, 900, 1180, 1181 },
                                   new[] { 901, 902, 903, 904, 1182 }, new[] { 905, 906, 907, 908, 1183 },
                                   new[] { 909, 910, 911, 1184 }, new[] { 912, 913, 914, 915, 916, 1185 },
                                   new[] { 917, 918, 919, 1186, 1187 }, new[] { 920, 921, 922, 923, 924 },
                                   new[] { 925, 926, 927, 928, 1188 }
                               };
                }
            }
        }
        private class VersePerDayOt90 : DailyPlanSchedule
        {
            public override int[][] Schedule
            {
                get
                {
                    return new[]
                               {
                                   new[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 929, 930, 931, 932 },
                                   new[] { 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 933, 934 },
                                   new[] { 20, 21, 22, 23, 24, 25, 26, 935, 936, 937 },
                                   new[] { 27, 28, 29, 30, 31, 32, 33, 34, 938, 939 },
                                   new[] { 35, 36, 37, 38, 39, 40, 41, 940, 941 },
                                   new[] { 42, 43, 44, 45, 46, 47, 48, 49, 50, 942, 943 },
                                   new[] { 51, 52, 53, 54, 55, 56, 57, 58, 59, 944, 945, 946 },
                                   new[] { 60, 61, 62, 63, 64, 65, 66, 67, 68, 947, 948, 949 },
                                   new[] { 69, 70, 71, 72, 73, 74, 75, 76, 77, 950, 951 },
                                   new[] { 78, 79, 80, 81, 82, 83, 84, 952, 953 },
                                   new[] { 85, 86, 87, 88, 89, 90, 91, 92, 93, 954 },
                                   new[] { 94, 95, 96, 97, 98, 99, 100, 101, 102, 955, 956 },
                                   new[] { 103, 104, 105, 106, 107, 108, 109, 957, 958 },
                                   new[] { 110, 111, 112, 113, 114, 115, 116, 959, 960, 961 },
                                   new[] { 117, 118, 119, 120, 121, 122, 962 },
                                   new[] { 123, 124, 125, 126, 127, 128, 129, 963, 964, 965 },
                                   new[] { 130, 131, 132, 133, 134, 135, 136, 137, 966 },
                                   new[] { 138, 139, 140, 141, 142, 143, 144, 145, 967, 968, 969 },
                                   new[] { 146, 147, 148, 149, 150, 151, 152, 970 },
                                   new[] { 153, 154, 155, 156, 157, 158, 159, 971, 972 },
                                   new[] { 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 973, 974 },
                                   new[] { 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 975, 976 },
                                   new[] { 181, 182, 183, 184, 185, 186, 187, 188, 189, 977, 978 },
                                   new[] { 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 979, 980 },
                                   new[] { 200, 201, 202, 203, 204, 205, 206, 207, 981 },
                                   new[] { 208, 209, 210, 211, 212, 213, 214, 215, 216, 982, 983 },
                                   new[] { 217, 218, 219, 220, 221, 222, 223, 224, 225, 984, 985 },
                                   new[] { 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 986, 987 },
                                   new[] { 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 988, 989, 990 },
                                   new[] { 247, 248, 249, 250, 251, 252, 253, 254, 991, 992 },
                                   new[] { 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 993, 994 },
                                   new[] { 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 995 },
                                   new[] { 275, 276, 277, 278, 279, 280, 281, 282, 283, 996, 997 },
                                   new[] { 284, 285, 286, 287, 288, 289, 290, 291, 998, 999 },
                                   new[] { 292, 293, 294, 295, 296, 297, 1000, 1001 },
                                   new[] { 298, 299, 300, 301, 302, 303, 304, 1002 },
                                   new[] { 305, 306, 307, 308, 309, 310, 311, 312, 1003, 1004 },
                                   new[] { 313, 314, 315, 316, 317, 318, 319, 320, 321, 1005, 1006 },
                                   new[] { 322, 323, 324, 325, 326, 327, 328, 329, 1007 },
                                   new[] { 330, 331, 332, 333, 334, 335, 336, 337, 338, 1008, 1009, 1010 },
                                   new[] { 339, 340, 341, 342, 343, 1011, 1012, 1013 },
                                   new[] { 344, 345, 346, 347, 348, 349, 350, 351, 1014, 1015 },
                                   new[] { 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 1016, 1017, 1018 },
                                   new[] { 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 1019, 1020, 1021 },
                                   new[] { 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 1022, 1023 },
                                   new[] { 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 1024, 1025 },
                                   new[] { 396, 397, 398, 399, 400, 401, 402, 403, 404, 1026, 1027 },
                                   new[] { 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 1028, 1029, 1030 },
                                   new[] { 416, 417, 418, 419, 420, 421, 422, 423, 1031, 1032 },
                                   new[] { 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 1033, 1034 },
                                   new[] { 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 1035, 1036, 1037 },
                                   new[] { 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 1038, 1039 },
                                   new[] { 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 1040, 1041, 1042, 1043 },
                                   new[] { 467, 468, 469, 470, 471, 472, 473, 474, 475, 1044, 1045 },
                                   new[]
                                       {
                                           476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491,
                                           492, 493, 494, 495, 1046, 1047, 1048
                                       },
                                   new[]
                                       {
                                           496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
                                           1049, 1050, 1051
                                       },
                                   new[]
                                       {
                                           512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 1052,
                                           1053, 1054
                                       },
                                   new[]
                                       {
                                           527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542,
                                           543, 544, 545, 1055, 1056, 1057, 1058
                                       },
                                   new[] { 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 1059, 1060, 1061 },
                                   new[]
                                       {
                                           556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 1062,
                                           1063, 1064, 1065
                                       },
                                   new[]
                                       {
                                           571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 1066, 1067, 1068
                                           , 1069
                                       },
                                   new[] { 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 1070, 1071, 1072 },
                                   new[]
                                       {
                                           596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611,
                                           612, 1073, 1074, 1075
                                       },
                                   new[]
                                       {
                                           613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628,
                                           629, 1076, 1077
                                       },
                                   new[] { 630, 631, 632, 633, 634, 635, 636, 637, 638, 1078, 1079, 1080, 1081, 1082 },
                                   new[] { 639, 640, 641, 642, 643, 644, 645, 646, 647, 1083, 1084, 1085, 1086, 1087 },
                                   new[] { 648, 649, 650, 651, 652, 653, 654, 655, 1088, 1089, 1090, 1091 },
                                   new[] { 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 1092, 1093, 1094 },
                                   new[]
                                       {
                                           668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 1095,
                                           1096, 1097, 1098
                                       },
                                   new[]
                                       {
                                           683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 1099, 1100,
                                           1101
                                       },
                                   new[]
                                       {
                                           697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 1102, 1103, 1104
                                           , 1105
                                       },
                                   new[] { 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 1106, 1107, 1108 },
                                   new[]
                                       {
                                           722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 1109, 1110,
                                           1111, 1112, 1113
                                       },
                                   new[]
                                       {
                                           736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 1114, 1115, 1116,
                                           1117, 1118
                                       },
                                   new[]
                                       { 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 1119, 1120, 1121, 1122, 1123 },
                                   new[] { 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 1124, 1125, 1126, 1127 }
                                   , new[] { 769, 770, 771, 772, 773, 774, 775, 776, 777, 1128, 1129, 1130, 1131, 1132 },
                                   new[]
                                       {
                                           778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 1133, 1134, 1135
                                           , 1136, 1137
                                       },
                                   new[] { 791, 792, 793, 794, 795, 796, 1138, 1139, 1140, 1141 },
                                   new[] { 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 1142, 1143, 1144 },
                                   new[] { 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 1145, 1146, 1147 },
                                   new[] { 818, 819, 820, 821, 822, 823, 824, 825, 1148, 1149, 1150, 1151 },
                                   new[]
                                       { 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 1152, 1153, 1154, 1155, 1156 },
                                   new[] { 836, 837, 838, 839, 840, 841, 842, 843, 844, 1157, 1158, 1159, 1160 },
                                   new[] { 845, 846, 847, 848, 849, 850, 851, 852, 853, 1161, 1162, 1163, 1164, 1165 },
                                   new[] { 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 1166, 1167, 1168 },
                                   new[]
                                       {
                                           864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879,
                                           1169, 1170, 1171, 1172, 1173, 1174
                                       },
                                   new[]
                                       {
                                           880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895,
                                           896, 1175, 1176, 1177, 1178, 1179
                                       },
                                   new[]
                                       {
                                           897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 1180,
                                           1181, 1182, 1183, 1184
                                       },
                                   new[]
                                       {
                                           912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927,
                                           928, 1185, 1186, 1187, 1188
                                       }
                               };
                }
            }
        }

        private class VersePerDayTopic180 : DailyPlanSchedule
        {
            public override int[][] Schedule
            {
                get
                {
                    return new[]
                               {
                                   new[] { 1046, 1047, 1048, 1049 }, new[] { 0, 1, 2, 3, 4, 5, 6, 7, 8 },
                                   new[] { 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198 },
                                   new[] { 478, 479, 480, 481, 482, 483, 484, 485, 486 },
                                   new[] { 436, 437, 438, 439, 440 },
                                   new[] { 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689 },
                                   new[] { 929, 930, 931, 932, 933, 934, 935 }, new[] { 1050, 1051, 1052, 1053 },
                                   new[] { 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 },
                                   new[] { 199, 200, 201, 202, 203, 204, 205, 206, 207 },
                                   new[] { 487, 488, 489, 490, 491, 492, 493, 494, 495 }, new[] { 441, 442, 443, 444 },
                                   new[] { 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703 },
                                   new[] { 936, 937, 938, 939, 940 }, new[] { 1054, 1055, 1056, 1057 },
                                   new[] { 19, 20, 21, 22, 23, 24, 25 },
                                   new[] { 208, 209, 210, 211, 212, 213, 214, 215, 216 }, new[] { 496, 497, 498, 499 },
                                   new[] { 445, 446, 447 },
                                   new[] { 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715 },
                                   new[] { 941, 942, 943, 944, 945 }, new[] { 1058, 1059, 1060, 1061, 1062 },
                                   new[] { 26, 27, 28, 29, 30, 31 },
                                   new[] { 217, 218, 219, 220, 221, 222, 223, 224, 225, 226 },
                                   new[] { 500, 501, 502, 503, 504, 505, 506, 507, 508 }, new[] { 448, 449, 450, 451 },
                                   new[] { 716, 717, 718, 719, 720, 721, 722, 723, 724 },
                                   new[] { 946, 947, 948, 949, 950 }, new[] { 1063, 1064, 1065, 1066, 1067 },
                                   new[] { 32, 33, 34, 35, 36, 37, 38 },
                                   new[] { 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237 },
                                   new[] { 509, 510, 511, 512 }, new[] { 452, 453, 454, 455 },
                                   new[] { 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738 },
                                   new[] { 951, 952, 953, 954 }, new[] { 1068, 1069, 1070, 1071 },
                                   new[] { 39, 40, 41, 42, 43, 44, 45 },
                                   new[] { 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249 },
                                   new[] { 513, 514, 515, 516, 517 }, new[] { 456, 457, 458 },
                                   new[] { 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749 },
                                   new[] { 955, 956, 957, 958, 959 }, new[] { 1072, 1073, 1074, 1075 },
                                   new[] { 46, 47, 48, 49, 50, 51, 52, 53, 54 },
                                   new[] { 250, 251, 252, 253, 254, 255, 256, 257, 258 },
                                   new[] { 518, 519, 520, 521, 522, 523, 524 }, new[] { 459, 460, 461, 462, 463 },
                                   new[] { 750, 751, 752, 753, 754, 755, 756, 757, 758 }, new[] { 960, 961, 962, 963 },
                                   new[] { 1076, 1077, 1078 }, new[] { 55, 56, 57, 58, 59, 60, 61, 62 },
                                   new[] { 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269 },
                                   new[] { 525, 526, 527, 528, 529, 530, 531 }, new[] { 464, 465, 466 },
                                   new[] { 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769 },
                                   new[] { 964, 965, 966, 967, 968 }, new[] { 1079, 1080, 1081, 1082, 1083, 1084 },
                                   new[] { 63, 64, 65, 66, 67, 68, 69, 70 },
                                   new[] { 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280 },
                                   new[] { 532, 533, 534, 535, 536, 537, 538 }, new[] { 467, 468, 469 },
                                   new[] { 770, 771, 772, 773, 774, 775, 776, 777 }, new[] { 969, 970, 971 },
                                   new[] { 1085, 1086, 1087, 1088, 1089 }, new[] { 71, 72, 73, 74, 75, 76, 77, 78 },
                                   new[] { 281, 282, 283, 284, 285, 286, 287, 288, 289 },
                                   new[] { 539, 540, 541, 542, 543, 544, 545 }, new[] { 470, 471, 472, 473 },
                                   new[] { 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788 },
                                   new[] { 972, 973, 974, 975 }, new[] { 1090, 1091, 1092, 1093, 1094 },
                                   new[] { 79, 80, 81, 82, 83, 84, 85 }, new[] { 290, 291, 292, 293, 294, 295, 296, 297 },
                                   new[] { 546, 547, 548, 549, 550 }, new[] { 474, 475, 476 },
                                   new[] { 789, 790, 791, 792, 793, 794, 795 }, new[] { 976, 977, 978, 979, 980 },
                                   new[] { 1095, 1096, 1097, 1098, 1099 }, new[] { 86, 87, 88, 89, 90, 91, 92, 93 },
                                   new[] { 298, 299, 300, 301, 302, 303, 304 }, new[] { 551, 552, 553, 554, 555 },
                                   new[] { 477, 628, 629 }, new[] { 796, 797, 798, 799, 800, 801, 802 },
                                   new[] { 981, 982, 983 }, new[] { 1100, 1101, 1102, 1103 },
                                   new[] { 94, 95, 96, 97, 98, 99, 100 }, new[] { 305, 306, 307, 308, 309, 310, 311, 312 }
                                   , new[] { 556, 557, 558 }, new[] { 630, 631, 632 },
                                   new[] { 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814 },
                                   new[] { 984, 985, 986, 987, 988 }, new[] { 1104, 1105, 1106, 1107 },
                                   new[] { 101, 102, 103, 104, 105, 106, 107 },
                                   new[] { 313, 314, 315, 316, 317, 318, 319, 320, 321 },
                                   new[] { 559, 560, 561, 562, 563, 564, 565 }, new[] { 633, 634, 635 },
                                   new[] { 815, 816, 817, 818, 819, 820, 821, 822 }, new[] { 989, 990, 991, 992 },
                                   new[] { 1108, 1109, 1110, 1111, 1112, 1113 },
                                   new[] { 108, 109, 110, 111, 112, 113, 114 },
                                   new[] { 322, 323, 324, 325, 326, 327, 328, 329, 330, 331 },
                                   new[] { 566, 567, 568, 569 }, new[] { 636, 637, 638, 639 },
                                   new[] { 823, 824, 825, 826, 827, 828, 829, 830 }, new[] { 993, 994, 995, 996 },
                                   new[] { 1114, 1115, 1116, 1117, 1118, 1119 }, new[] { 115, 116, 117, 118, 119, 120 },
                                   new[] { 332, 333, 334, 335, 336, 337, 338, 339 },
                                   new[] { 570, 571, 572, 573, 574, 575, 576, 577, 578 }, new[] { 640, 641, 642 },
                                   new[] { 831, 832, 833, 834, 835, 836, 837, 838, 839 }, new[] { 997, 998, 999, 1000 },
                                   new[] { 1120, 1121, 1122, 1123, 1124, 1125 }, new[] { 121, 122, 123, 124, 125 },
                                   new[] { 340, 341, 342, 343, 344, 345, 346 }, new[] { 579, 580, 581, 582 },
                                   new[] { 643, 644, 645 }, new[] { 840, 841, 842, 843, 844, 845, 846, 847 },
                                   new[] { 1001, 1002, 1003, 1004 }, new[] { 1126, 1127, 1128, 1129, 1130 },
                                   new[] { 126, 127, 128, 129, 130, 131, 132 },
                                   new[] { 347, 348, 349, 350, 351, 352, 353, 354, 355 }, new[] { 583, 584 },
                                   new[] { 646, 647, 648 }, new[] { 848, 849, 850, 851, 852, 853, 854 },
                                   new[] { 1005, 1006, 1007, 1008 }, new[] { 1131, 1132, 1133, 1134, 1135, 1136, 1137 },
                                   new[] { 133, 134, 135, 136, 137, 138, 139, 140 },
                                   new[] { 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366 },
                                   new[] { 585, 586, 587, 588, 589 }, new[] { 649, 650, 651 },
                                   new[] { 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865 },
                                   new[] { 1009, 1010, 1011, 1012, 1013 }, new[] { 1138, 1139, 1140, 1141, 1142 },
                                   new[] { 141, 142, 143, 144, 145, 146, 147 },
                                   new[] { 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379 },
                                   new[] { 590, 591, 592, 593, 594, 595, 596 }, new[] { 652, 653, 654 },
                                   new[] { 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879 },
                                   new[] { 1014, 1015, 1016, 1017, 1018, 1019 }, new[] { 1143, 1144, 1145 },
                                   new[] { 148, 149, 150, 151, 152, 153 },
                                   new[] { 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392 },
                                   new[] { 597 }, new[] { 655, 656, 657 },
                                   new[] { 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894 },
                                   new[] { 1020, 1021, 1022, 1023, 1024 }, new[] { 1146, 1147, 1148, 1149, 1150 },
                                   new[] { 154, 155, 156, 157, 158, 159, 160 },
                                   new[] { 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403 },
                                   new[] { 598, 599, 600, 601 }, new[] { 658, 659, 660, 661 },
                                   new[] { 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909 },
                                   new[] { 1025, 1026, 1027, 1028, 1029 }, new[] { 1151, 1152, 1153, 1154, 1155 },
                                   new[] { 161, 162, 163, 164, 165, 166, 167, 168, 169 },
                                   new[] { 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414 },
                                   new[] { 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613 },
                                   new[] { 662, 663, 664, 665, 666 },
                                   new[] { 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924 },
                                   new[] { 1030, 1031, 1032, 1033, 1034 }, new[] { 1156, 1157, 1158, 1159, 1160, 1161 },
                                   new[] { 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180 },
                                   new[] { 415, 416, 417, 418, 419, 420, 421, 422, 423 },
                                   new[] { 614, 615, 616, 617, 618, 619, 620 }, new[] { 667, 668, 669, 670, 671, 672 },
                                   new[]
                                       { 925, 926, 927, 928, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176 },
                                   new[] { 1035, 1036, 1037, 1038, 1039, 1040 }, new[] { 1162, 1163, 1164, 1165, 1166 },
                                   new[] { 181, 182, 183, 184, 185, 186 },
                                   new[] { 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435 },
                                   new[] { 621, 622, 623, 624, 625, 626, 627 }, new[] { 673, 674, 675, 676, 677, 678 },
                                   new[] { 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188 },
                                   new[] { 1041, 1042, 1043, 1044, 1045 }
                               };
                }
            }
        }

        private class VersePerDayTopic365 : DailyPlanSchedule
        {
            public override int[][] Schedule
            {
                get
                {
                    return new[]
                               {
                                   new[] { 1046, 1047 }, new[] { 0, 1, 2, 3, 4 },
                                   new[] { 187, 188, 189, 190, 191, 192, 193 }, new[] { 478, 479, 480, 481, 482, 483 },
                                   new[] { 436, 437, 438 }, new[] { 679, 680, 681, 682, 683 },
                                   new[] { 929, 930, 931, 932, 933 }, new[] { 1048, 1049 }, new[] { 5, 6, 7, 8 },
                                   new[] { 194, 195, 196, 197 }, new[] { 484, 485, 486 }, new[] { 439, 440 },
                                   new[] { 684, 685, 686, 687, 688 }, new[] { 934, 935 }, new[] { 1050, 1051 },
                                   new[] { 9, 10, 11, 12, 13 }, new[] { 198, 199, 200, 201 },
                                   new[] { 487, 488, 489, 490, 491 }, new[] { 441 },
                                   new[] { 689, 690, 691, 692, 693, 694, 695 }, new[] { 936, 937, 938 },
                                   new[] { 1052, 1053 }, new[] { 14, 15, 16, 17 }, new[] { 202, 203, 204, 205, 206, 207 },
                                   new[] { 492, 493, 494, 495 }, new[] { 442, 443 },
                                   new[] { 696, 697, 698, 699, 700, 701, 702 }, new[] { 939, 940 }, new[] { 1054, 1055 },
                                   new[] { 18, 19, 20, 21 }, new[] { 208, 209, 210, 211 }, new[] { 496 },
                                   new[] { 444, 445 }, new[] { 703, 704, 705, 706, 707, 708 }, new[] { 941, 942 },
                                   new[] { 1056, 1057 }, new[] { 22, 23, 24 }, new[] { 212, 213, 214, 215, 216 },
                                   new[] { 497, 498, 499 }, new[] { 446, 447 }, new[] { 709, 710, 711, 712, 713, 714 },
                                   new[] { 943, 944 }, new[] { 1058, 1059 }, new[] { 25, 26, 27 }, new[] { 217, 218, 219 }
                                   , new[] { 500, 501, 502 }, new[] { 448, 449 }, new[] { 715, 716, 717, 718 },
                                   new[] { 945, 946, 947 }, new[] { 1060, 1061 }, new[] { 28, 29, 30 },
                                   new[] { 220, 221, 222, 223, 224, 225 }, new[] { 503, 504, 505, 506 }, new[] { 450 },
                                   new[] { 719, 720, 721, 722 }, new[] { 948, 949, 950 }, new[] { 1062, 1063 },
                                   new[] { 31, 32, 33, 34 }, new[] { 226, 227, 228, 229, 230 }, new[] { 507, 508, 509 },
                                   new[] { 451, 452 }, new[] { 723, 724, 725, 726, 727, 728, 729 }, new[] { 951, 952 },
                                   new[] { 1064, 1065, 1066 }, new[] { 35, 36, 37 }, new[] { 231, 232, 233, 234, 235 },
                                   new[] { 510, 511, 512 }, new[] { 453, 454 },
                                   new[] { 730, 731, 732, 733, 734, 735, 736 }, new[] { 953, 954 }, new[] { 1067, 1068 },
                                   new[] { 38, 39, 40 }, new[] { 236, 237, 238, 239, 240, 241 }, new[] { 513, 514 },
                                   new[] { 455, 456 }, new[] { 737, 738, 739, 740, 741, 742, 743 }, new[] { 955 },
                                   new[] { 1069, 1070, 1071 }, new[] { 41, 42, 43 },
                                   new[] { 242, 243, 244, 245, 246, 247 }, new[] { 515 }, new[] { 457 },
                                   new[] { 744, 745, 746, 747 }, new[] { 956, 957 }, new[] { 1072 },
                                   new[] { 44, 45, 46, 47 }, new[] { 248, 249, 250, 251 }, new[] { 516, 517, 518 },
                                   new[] { 458, 459 }, new[] { 748, 749, 750, 751 }, new[] { 958, 959, 960 },
                                   new[] { 1073, 1074 }, new[] { 48, 49, 50, 51 }, new[] { 252, 253, 254, 255 },
                                   new[] { 519, 520, 521, 522 }, new[] { 460, 461, 462 }, new[] { 752, 753, 754, 755 },
                                   new[] { 961, 962 }, new[] { 1075, 1076 }, new[] { 52, 53, 54, 55, 56 },
                                   new[] { 256, 257, 258, 259, 260 }, new[] { 523, 524, 525, 526 }, new[] { 463, 464 },
                                   new[] { 756, 757, 758, 759, 760 }, new[] { 963, 964 }, new[] { 1077 },
                                   new[] { 57, 58, 59 }, new[] { 261, 262, 263, 264, 265, 266 }, new[] { 527, 528 },
                                   new[] { 465 }, new[] { 761, 762, 763, 764, 765, 766 }, new[] { 965, 966 },
                                   new[] { 1078, 1079 }, new[] { 60, 61, 62, 63 }, new[] { 267, 268, 269, 270, 271 },
                                   new[] { 529, 530, 531, 532 }, new[] { 466, 467 }, new[] { 767, 768, 769, 770 },
                                   new[] { 967, 968 }, new[] { 1080, 1081, 1082 }, new[] { 64, 65, 66, 67 },
                                   new[] { 272, 273, 274, 275, 276, 277 }, new[] { 533, 534, 535, 536 }, new[] { 468 },
                                   new[] { 771, 772, 773, 774, 775 }, new[] { 969, 970 }, new[] { 1083, 1084, 1085 },
                                   new[] { 68, 69, 70, 71 }, new[] { 278, 279, 280, 281 }, new[] { 537, 538, 539 },
                                   new[] { 469 }, new[] { 776, 777, 778 }, new[] { 971, 972 }, new[] { 1086, 1087, 1088 },
                                   new[] { 72, 73, 74, 75 }, new[] { 282, 283, 284, 285 }, new[] { 540, 541, 542, 543 },
                                   new[] { 470, 471 }, new[] { 779, 780, 781, 782 }, new[] { 973, 974 },
                                   new[] { 1089, 1090 }, new[] { 76, 77, 78 }, new[] { 286, 287, 288, 289 },
                                   new[] { 544, 545 }, new[] { 472, 473 }, new[] { 783, 784, 785, 786, 787, 788 },
                                   new[] { 975, 976 }, new[] { 1091, 1092 }, new[] { 79, 80, 81, 82 },
                                   new[] { 290, 291, 292, 293 }, new[] { 546, 547, 548 }, new[] { 474 },
                                   new[] { 789, 790, 791, 792, 793 }, new[] { 977, 978 }, new[] { 1093, 1094 },
                                   new[] { 83, 84, 85 }, new[] { 294, 295, 296, 297 }, new[] { 549, 550 },
                                   new[] { 475, 476 }, new[] { 794, 795 }, new[] { 979, 980 }, new[] { 1095, 1096, 1097 },
                                   new[] { 86, 87, 88 }, new[] { 298, 299, 300 }, new[] { 551, 552 }, new[] { 477, 628 },
                                   new[] { 796, 797, 798, 799 }, new[] { 981 }, new[] { 1098, 1099 },
                                   new[] { 89, 90, 91, 92, 93 }, new[] { 301, 302, 303, 304 }, new[] { 553, 554, 555 },
                                   new[] { 629 }, new[] { 800, 801, 802 }, new[] { 982, 983 }, new[] { 1100, 1101 },
                                   new[] { 94, 95, 96, 97 }, new[] { 305, 306, 307, 308 }, new[] { 556 },
                                   new[] { 630, 631 }, new[] { 803, 804, 805, 806, 807, 808 }, new[] { 984, 985 },
                                   new[] { 1102, 1103 }, new[] { 98, 99, 100 }, new[] { 309, 310, 311, 312 },
                                   new[] { 557 }, new[] { 632 }, new[] { 809, 810, 811, 812, 813, 814 },
                                   new[] { 986, 987, 988 }, new[] { 1104 }, new[] { 101, 102, 103 },
                                   new[] { 313, 314, 315, 316 }, new[] { 558, 559, 560, 561 }, new[] { 633, 634 },
                                   new[] { 815, 816, 817, 818 }, new[] { 989, 990 }, new[] { 1105, 1106, 1107 },
                                   new[] { 104, 105, 106, 107 }, new[] { 317, 318, 319, 320, 321 },
                                   new[] { 562, 563, 564, 565 }, new[] { 635 }, new[] { 819, 820, 821 },
                                   new[] { 991, 992 }, new[] { 1108, 1109 }, new[] { 108, 109, 110, 111 },
                                   new[] { 322, 323, 324, 325, 326 }, new[] { 566 }, new[] { 636, 637 },
                                   new[] { 822, 823, 824 }, new[] { 993, 994 }, new[] { 1110, 1111, 1112 },
                                   new[] { 112, 113, 114 }, new[] { 327, 328, 329, 330 }, new[] { 567, 568 },
                                   new[] { 638 }, new[] { 825, 826, 827, 828, 829 }, new[] { 995, 996 },
                                   new[] { 1113, 1114, 1115 }, new[] { 115, 116 }, new[] { 331, 332, 333, 334, 335 },
                                   new[] { 569, 570, 571 }, new[] { 639, 640 }, new[] { 830, 831, 832, 833, 834 },
                                   new[] { 997 }, new[] { 1116, 1117, 1118 }, new[] { 117, 118, 119 },
                                   new[] { 336, 337, 338 }, new[] { 572, 573, 574, 575, 576 }, new[] { 641 },
                                   new[] { 835, 836, 837 }, new[] { 998, 999, 1000 }, new[] { 1119, 1120, 1121 },
                                   new[] { 120, 121, 122 }, new[] { 339, 340, 341, 342 }, new[] { 577, 578, 579 },
                                   new[] { 642, 643 }, new[] { 838, 839, 840, 841 }, new[] { 1001, 1002 },
                                   new[] { 1122, 1123, 1124 }, new[] { 123 }, new[] { 343, 344 }, new[] { 580, 581 },
                                   new[] { 644 }, new[] { 842, 843, 844, 845 }, new[] { 1003 }, new[] { 1125, 1126 },
                                   new[] { 124, 125, 126, 127 }, new[] { 345, 346, 347, 348 }, new[] { 582 },
                                   new[] { 645, 646 }, new[] { 846, 847, 848, 849 }, new[] { 1004, 1005 },
                                   new[] { 1127, 1128, 1129 }, new[] { 128, 129, 130, 131 },
                                   new[] { 349, 350, 351, 352, 353 }, new[] { 583 }, new[] { 647 },
                                   new[] { 850, 851, 852, 853 }, new[] { 1006, 1007 }, new[] { 1130, 1131, 1132 },
                                   new[] { 132, 133, 134 }, new[] { 354, 355, 356, 357, 358, 359 }, new[] { 584 },
                                   new[] { 648, 649 }, new[] { 854, 855, 856, 857 }, new[] { 1008, 1009 },
                                   new[] { 1133, 1134, 1135 }, new[] { 135, 136, 137, 138 },
                                   new[] { 360, 361, 362, 363, 364 }, new[] { 585, 586 }, new[] { 650 },
                                   new[] { 858, 859, 860 }, new[] { 1010, 1011, 1012 }, new[] { 1136, 1137, 1138 },
                                   new[] { 139, 140, 141, 142 }, new[] { 365, 366, 367, 368, 369, 370 },
                                   new[] { 587, 588, 589, 590, 591, 592 }, new[] { 651, 652 },
                                   new[] { 861, 862, 863, 864, 865, 866, 867, 868 }, new[] { 1013, 1014, 1015 },
                                   new[] { 1139, 1140, 1141 }, new[] { 143, 144, 145 }, new[] { 371, 372, 373, 374, 375 },
                                   new[] { 593, 594, 595 }, new[] { 653 },
                                   new[] { 869, 870, 871, 872, 873, 874, 875, 876 }, new[] { 1016, 1017 }, new[] { 1142 },
                                   new[] { 146, 147, 148 }, new[] { 376, 377, 378, 379, 380, 381, 382 }, new[] { 596 },
                                   new[] { 654, 655 }, new[] { 877, 878, 879, 880, 881, 882 }, new[] { 1018, 1019, 1020 },
                                   new[] { 1143, 1144 }, new[] { 149, 150 }, new[] { 383, 384, 385, 386, 387, 388 },
                                   new[] { 597 }, new[] { 656, 657 }, new[] { 883, 884, 885, 886, 887, 888 },
                                   new[] { 1021, 1022, 1023 }, new[] { 1145, 1146 }, new[] { 151, 152, 153, 154 },
                                   new[] { 389, 390, 391, 392, 393, 394 }, new[] { 598 }, new[] { 658 },
                                   new[] { 889, 890, 891, 892, 893, 894, 895, 896, 897 }, new[] { 1024, 1025 },
                                   new[] { 1147, 1148 }, new[] { 155, 156, 157 }, new[] { 395, 396, 397, 398, 399 },
                                   new[] { 599 }, new[] { 659, 660 }, new[] { 898, 899, 900, 901, 902, 903, 904 },
                                   new[] { 1026, 1027 }, new[] { 1149, 1150, 1151 }, new[] { 158, 159, 160, 161 },
                                   new[] { 400, 401, 402, 403, 404 }, new[] { 600, 601, 602, 603 }, new[] { 661, 662 },
                                   new[] { 905, 906, 907, 908, 909, 910 }, new[] { 1028, 1029, 1030 },
                                   new[] { 1152, 1153 }, new[] { 162, 163, 164, 165 }, new[] { 405, 406, 407, 408, 409 },
                                   new[] { 604, 605, 606, 607, 608, 609 }, new[] { 663, 664, 665 },
                                   new[] { 911, 912, 913, 914, 915, 916, 917, 918 }, new[] { 1031, 1032 },
                                   new[] { 1154, 1155, 1156 }, new[] { 166, 167, 168, 169, 170 },
                                   new[] { 410, 411, 412, 413, 414, 415 }, new[] { 610, 611, 612, 613 },
                                   new[] { 666, 667 }, new[] { 919, 920, 921, 922, 923, 924, 925 },
                                   new[] { 1033, 1034, 1035 }, new[] { 1157, 1158 }, new[] { 171, 172, 173, 174, 175 },
                                   new[] { 416, 417, 418, 419 }, new[] { 614, 615, 616 }, new[] { 668, 669 },
                                   new[] { 926, 927, 928, 1167, 1168, 1169 }, new[] { 1036, 1037 },
                                   new[] { 1159, 1160, 1161 }, new[] { 176, 177, 178, 179, 180 },
                                   new[] { 420, 421, 422, 423 }, new[] { 617, 618, 619, 620, 621 },
                                   new[] { 670, 671, 672 }, new[] { 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177 },
                                   new[] { 1038, 1039, 1040 }, new[] { 1162, 1163 }, new[] { 181, 182, 183 },
                                   new[] { 424, 425, 426, 427 }, new[] { 622, 623, 624 }, new[] { 673, 674, 675 },
                                   new[] { 1178, 1179, 1180, 1181, 1182, 1183 }, new[] { 1041, 1042, 1043 },
                                   new[] { 1164, 1165, 1166 }, new[] { 184, 185, 186 },
                                   new[] { 428, 429, 430, 431, 432, 433, 434, 435 }, new[] { 625, 626, 627 },
                                   new[] { 676, 677, 678 }, new[] { 1184, 1185, 1186, 1187, 1188 }, new[] { 1044, 1045 }
                               };
                }
            }
        }

        private class VersePerDayTopic90 : DailyPlanSchedule
        {
            public override int[][] Schedule
            {
                get
                {
                    return new[]
                               {
                                   new[] { 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054 },
                                   new[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 },
                                   new[]
                                       {
                                           187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202,
                                           203, 204, 205, 206, 207, 208
                                       },
                                   new[]
                                       {
                                           478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493,
                                           494, 495
                                       },
                                   new[] { 436, 437, 438, 439, 440, 441, 442, 443, 444 },
                                   new[]
                                       {
                                           679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694,
                                           695, 696, 697, 698, 699, 700, 701, 702, 703, 704
                                       },
                                   new[] { 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941 },
                                   new[] { 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062 },
                                   new[] { 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32 },
                                   new[]
                                       {
                                           209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
                                           225, 226, 227, 228
                                       },
                                   new[] { 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508 },
                                   new[] { 445, 446, 447, 448, 449, 450, 451 },
                                   new[]
                                       {
                                           705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720,
                                           721, 722, 723, 724, 725, 726, 727
                                       },
                                   new[] { 942, 943, 944, 945, 946, 947, 948, 949, 950, 951 },
                                   new[] { 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072 },
                                   new[] { 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47 },
                                   new[]
                                       {
                                           229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
                                           245, 246, 247, 248, 249, 250, 251
                                       },
                                   new[] { 509, 510, 511, 512, 513, 514, 515, 516, 517, 518 },
                                   new[] { 452, 453, 454, 455, 456, 457, 458, 459 },
                                   new[]
                                       {
                                           728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743,
                                           744, 745, 746, 747, 748, 749, 750, 751
                                       },
                                   new[] { 952, 953, 954, 955, 956, 957, 958, 959, 960 },
                                   new[] { 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080 },
                                   new[] { 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65 },
                                   new[]
                                       {
                                           252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
                                           268, 269, 270, 271, 272, 273
                                       },
                                   new[] { 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533 },
                                   new[] { 460, 461, 462, 463, 464, 465, 466, 467 },
                                   new[]
                                       {
                                           752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767,
                                           768, 769, 770, 771, 772
                                       },
                                   new[] { 961, 962, 963, 964, 965, 966, 967, 968, 969 },
                                   new[] { 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092 },
                                   new[] { 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80 },
                                   new[]
                                       {
                                           274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
                                           290, 291, 292
                                       },
                                   new[] { 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546 },
                                   new[] { 468, 469, 470, 471, 472, 473, 474 },
                                   new[]
                                       {
                                           773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788,
                                           789, 790, 791, 792
                                       },
                                   new[] { 970, 971, 972, 973, 974, 975, 976, 977 },
                                   new[] { 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101 },
                                   new[] { 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97 },
                                   new[]
                                       { 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308 },
                                   new[] { 547, 548, 549, 550, 551, 552, 553, 554, 555 },
                                   new[] { 475, 476, 477, 628, 629, 630, 631 },
                                   new[]
                                       { 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808 },
                                   new[] { 978, 979, 980, 981, 982, 983, 984, 985 },
                                   new[] { 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110 },
                                   new[] { 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112 },
                                   new[]
                                       {
                                           309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
                                           325, 326, 327
                                       },
                                   new[] { 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566 },
                                   new[] { 632, 633, 634, 635, 636, 637 },
                                   new[]
                                       {
                                           809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824,
                                           825, 826
                                       },
                                   new[] { 986, 987, 988, 989, 990, 991, 992, 993, 994, 995 },
                                   new[] { 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123 },
                                   new[] { 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123 },
                                   new[]
                                       { 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343 },
                                   new[] { 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581 },
                                   new[] { 638, 639, 640, 641, 642, 643, 644 },
                                   new[]
                                       {
                                           827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842,
                                           843, 844
                                       },
                                   new[] { 996, 997, 998, 999, 1000, 1001, 1002, 1003 },
                                   new[] { 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135 },
                                   new[] { 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138 },
                                   new[]
                                       {
                                           344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359,
                                           360, 361, 362, 363, 364
                                       },
                                   new[] { 582, 583, 584, 585, 586 },
                                   new[] { 645, 646, 647, 648, 649, 650 },
                                   new[]
                                       { 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860 },
                                   new[] { 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012 },
                                   new[] { 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144 },
                                   new[] { 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151 },
                                   new[]
                                       {
                                           365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380,
                                           381, 382, 383, 384, 385, 386, 387, 388, 389, 390
                                       },
                                   new[] { 587, 588, 589, 590, 591, 592, 593, 594, 595, 596 },
                                   new[] { 651, 652, 653, 654, 655, 656, 657 },
                                   new[]
                                       {
                                           861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876,
                                           877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891
                                       },
                                   new[] { 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024 },
                                   new[] { 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155 },
                                   new[]
                                       {
                                           152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
                                           168
                                       },
                                   new[]
                                       {
                                           391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
                                           407, 408, 409, 410, 411, 412
                                       },
                                   new[]
                                       { 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612 },
                                   new[] { 658, 659, 660, 661, 662, 663, 664, 665, 666 },
                                   new[]
                                       {
                                           892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907,
                                           908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922
                                       },
                                   new[] { 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034 },
                                   new[] { 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166 },
                                   new[]
                                       {
                                           169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
                                           185, 186
                                       },
                                   new[]
                                       {
                                           413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
                                           429, 430, 431, 432, 433, 434, 435
                                       },
                                   new[] { 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627 },
                                   new[] { 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678 },
                                   new[]
                                       {
                                           923, 924, 925, 926, 927, 928, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174,
                                           1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187,
                                           1188
                                       },
                                   new[] { 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045 }
                               };
                }
            }
        }

        public static int[][] ZAllPlans(int index)
        {
            return AllSchedules[index].Schedule;
        }

        private static readonly DailyPlanSchedule[] AllSchedules =
            {
                new VersePerDay365(), new VersePerDay180(), new VersePerDay90(), new VersePerDayOt365(),
                new VersePerDayOt180(),new  VersePerDayOt90(), new VersePerDayTopic365(),
                new VersePerDayTopic180(), new VersePerDayTopic90(), new ChapterRandom365(),
                new ChapterRandom180(), new ChapterRandom90(), new Fast90DayNt(), new Fast60DayNt(), new Fast30DayNt(),
                new VersePerDayNtPvPs(), new Chronologically365(), new Chronologically180(),
                new Chronologically90(), new ChronologicallyNt90(), new ChronologicallyNt60(),
                new ChronologicallyNt30()
            };

        public static string[][] ZzAllPlansNames =
            {
                new[] { "From the beginning to the end", "365", "11" },
                new[] { "From the beginning to the end", "180", "22" },
                new[] { "From the beginning to the end", "90", "44" },
                new[] { "The Old and New Testement each day", "365", "11" },
                new[] { "The Old and New Testement each day", "180", "22" },
                new[] { "The Old and New Testement each day", "90", "44" },
                new[] { "The bible by topic", "365", "11" },
                new[] { "The bible by topic", "180", "22" },
                new[] { "The bible by topic", "90", "44" },
                new[] { "The bible by random chapters", "365", "11" },
                new[] { "The bible by random chapters", "180", "22" },
                new[] { "The bible by random chapters", "90", "44" },
                new[] { "The New Testement", "90", "10" },
                new[] { "The New Testement", "60", "15" },
                new[] { "The New Testement", "30", "30" },
                new[] { "The New Testement, Psalms, Proverbs", "365", "4" },
                new[] { "The bible, chronological", "365", "11" },
                new[] { "The bible, chronological", "180", "22" },
                new[] { "The bible, chronological", "90", "44" },
                new[] { "The New Testement, chronological", "90", "10" },
                new[] { "The New Testement, chronological", "60", "15" },
                new[] { "The New Testement, chronological", "30", "30" }
            };
        /*
                /// <summary>
                ///     Constant for the number of chapters in each book
                /// </summary>
                private static readonly short[] ChaptersInBook =
                    {
                        50, 40, 27, 36, 34, 24, 21, 4, 31, 24, 22, 25, 29, 36, 10, 13
                        , 10, 42, 150, 31, 12, 8, 66, 52, 5, 48, 12, 14, 3, 9, 1, 4,
                        7, 3, 3, 3, 2, 14, 4, 28, 16, 24, 21, 28, 16, 16, 13, 6, 6, 4
                        , 4, 5, 3, 6, 4, 3, 1, 13, 5, 5, 3, 5, 1, 1, 1, 22
                    };

                /// <summary>
                ///     Constant for the number of verses in each chapter
                /// </summary>
                private static readonly short[][] VersesInChapter =
                    {
                        new short[]
                            {
                                31, 25, 24, 26, 32, 22, 24, 22, 29, 32, 32, 20, 18
                                , 24, 21, 16, 27, 33, 38, 18, 34, 24, 20, 67, 34,
                                35, 46, 22, 35, 43, 55, 32, 20, 31, 29, 43, 36, 30
                                , 23, 23, 57, 38, 34, 34, 28, 34, 31, 22, 33, 26
                            }
                        ,
                        new short[]
                            {
                                22, 25, 22, 31, 23, 30, 25, 32, 35, 29, 10, 51, 22
                                , 31, 27, 36, 16, 27, 25, 26, 36, 31, 33, 18, 40,
                                37, 21, 43, 46, 38, 18, 35, 23, 35, 35, 38, 29, 31
                                , 43, 38
                            },
                        new short[]
                            {
                                17, 16, 17, 35, 19, 30, 38, 36, 24, 20, 47, 8, 59,
                                57, 33, 34, 16, 30, 37, 27, 24, 33, 44, 23, 55, 46
                                , 34
                            },
                        new short[]
                            {
                                54, 34, 51, 49, 31, 27, 89, 26, 23, 36, 35, 16, 33
                                , 45, 41, 50, 13, 32, 22, 29, 35, 41, 30, 25, 18,
                                65, 23, 31, 40, 16, 54, 42, 56, 29, 34, 13
                            },
                        new short[]
                            {
                                46, 37, 29, 49, 33, 25, 26, 20, 29, 22, 32, 32, 18
                                , 29, 23, 22, 20, 22, 21, 20, 23, 30, 25, 22, 19,
                                19, 26, 68, 29, 20, 30, 52, 29, 12
                            },
                        new short[]
                            {
                                18, 24, 17, 24, 15, 27, 26, 35, 27, 43, 23, 24, 33
                                , 15, 63, 10, 18, 28, 51, 9, 45, 34, 16, 33
                            },
                        new short[]
                            {
                                36, 23, 31, 24, 31, 40, 25, 35, 57, 18, 40, 15, 25
                                , 20, 20, 31, 13, 31, 30, 48, 25
                            },
                        new short[] { 22, 23, 18, 22 },
                        new short[]
                            {
                                28, 36, 21, 22, 12, 21, 17, 22, 27, 27, 15, 25, 23
                                , 52, 35, 23, 58, 30, 24, 42, 15, 23, 29, 22, 44,
                                25, 12, 25, 11, 31, 13
                            },
                        new short[]
                            {
                                27, 32, 39, 12, 25, 23, 29, 18, 13, 19, 27, 31, 39
                                , 33, 37, 23, 29, 33, 43, 26, 22, 51, 39, 25
                            },
                        new short[]
                            {
                                53, 46, 28, 34, 18, 38, 51, 66, 28, 29, 43, 33, 34
                                , 31, 34, 34, 24, 46, 21, 43, 29, 53
                            },
                        new short[]
                            {
                                18, 25, 27, 44, 27, 33, 20, 29, 37, 36, 21, 21, 25
                                , 29, 38, 20, 41, 37, 37, 21, 26, 20, 37, 20, 30
                            }
                        ,
                        new short[]
                            {
                                54, 55, 24, 43, 26, 81, 40, 40, 44, 14, 47, 40, 14
                                , 17, 29, 43, 27, 17, 19, 8, 30, 19, 32, 31, 31,
                                32, 34, 21, 30
                            },
                        new short[]
                            {
                                17, 18, 17, 22, 14, 42, 22, 18, 31, 19, 23, 16, 22
                                , 15, 19, 14, 19, 34, 11, 37, 20, 12, 21, 27, 28,
                                23, 9, 27, 36, 27, 21, 33, 25, 33, 27, 23
                            },
                        new short[] { 11, 70, 13, 24, 17, 22, 28, 36, 15, 44 },
                        new short[]
                            {
                                11, 20, 32, 23, 19, 19, 73, 18, 38, 39, 36, 47, 31
                            },
                        new short[] { 22, 23, 15, 17, 14, 14, 10, 17, 32, 3 },
                        new short[]
                            {
                                22, 13, 26, 21, 27, 30, 21, 22, 35, 22, 20, 25, 28
                                , 22, 35, 22, 16, 21, 29, 29, 34, 30, 17, 25, 6,
                                14, 23, 28, 25, 31, 40, 22, 33, 37, 16, 33, 24, 41
                                , 30, 24, 34, 17
                            },
                        new short[]
                            {
                                6, 12, 8, 8, 12, 10, 17, 9, 20, 18, 7, 8, 6, 7, 5,
                                11, 15, 50, 14, 9, 13, 31, 6, 10, 22, 12, 14, 9,
                                11, 12, 24, 11, 22, 22, 28, 12, 40, 22, 13, 17, 13
                                , 11, 5, 26, 17, 11, 9, 14, 20, 23, 19, 9, 6, 7,
                                23, 13, 11, 11, 17, 12, 8, 12, 11, 10, 13, 20, 7,
                                35, 36, 5, 24, 20, 28, 23, 10, 12, 20, 72, 13, 19,
                                16, 8, 18, 12, 13, 17, 7, 18, 52, 17, 16, 15, 5,
                                23, 11, 13, 12, 9, 9, 5, 8, 28, 22, 35, 45, 48, 43
                                , 13, 31, 7, 10, 10, 9, 8, 18, 19, 2, 29, 176, 7,
                                8, 9, 4, 8, 5, 6, 5, 6, 8, 8, 3, 18, 3, 3, 21, 26,
                                9, 8, 24, 13, 10, 7, 12, 15, 21, 10, 20, 14, 9, 6
                            },
                        new short[]
                            {
                                33, 22, 35, 27, 23, 35, 27, 36, 18, 32, 31, 28, 25
                                , 35, 33, 33, 28, 24, 29, 30, 31, 29, 35, 34, 28,
                                28, 27, 28, 27, 33, 31
                            },
                        new short[]
                            { 18, 26, 22, 16, 20, 12, 29, 17, 18, 20, 10, 14 },
                        new short[] { 17, 17, 11, 16, 16, 13, 13, 14 },
                        new short[]
                            {
                                31, 22, 26, 6, 30, 13, 25, 22, 21, 34, 16, 6, 22,
                                32, 9, 14, 14, 7, 25, 6, 17, 25, 18, 23, 12, 21,
                                13, 29, 24, 33, 9, 20, 24, 17, 10, 22, 38, 22, 8,
                                31, 29, 25, 28, 28, 25, 13, 15, 22, 26, 11, 23, 15
                                , 12, 17, 13, 12, 21, 14, 21, 22, 11, 12, 19, 12,
                                25, 24
                            },
                        new short[]
                            {
                                19, 37, 25, 31, 31, 30, 34, 22, 26, 25, 23, 17, 27
                                , 22, 21, 21, 27, 23, 15, 18, 14, 30, 40, 10, 38,
                                24, 22, 17, 32, 24, 40, 44, 26, 22, 19, 32, 21, 28
                                , 18, 16, 18, 22, 13, 30, 5, 28, 7, 47, 39, 46, 64
                                , 34
                            },
                        new short[] { 22, 22, 66, 22, 22 },
                        new short[]
                            {
                                28, 10, 27, 17, 17, 14, 27, 18, 11, 22, 25, 28, 23
                                , 23, 8, 63, 24, 32, 14, 49, 32, 31, 49, 27, 17,
                                21, 36, 26, 21, 26, 18, 32, 33, 31, 15, 38, 28, 23
                                , 29, 49, 26, 20, 27, 31, 25, 24, 23, 35
                            },
                        new short[]
                            { 21, 49, 30, 37, 31, 28, 28, 27, 27, 21, 45, 13 },
                        new short[]
                            {
                                11, 23, 5, 19, 15, 11, 16, 14, 17, 15, 12, 14, 16,
                                9
                            },
                        new short[] { 20, 32, 21 },
                        new short[] { 15, 16, 15, 13, 27, 14, 17, 14, 15 },
                        new short[] { 21 }, new short[] { 17, 10, 10, 11 },
                        new short[] { 16, 13, 12, 13, 15, 16, 20 },
                        new short[] { 15, 13, 19 }, new short[] { 17, 20, 19 },
                        new short[] { 18, 15, 20 }, new short[] { 15, 23 },
                        new short[]
                            {
                                21, 13, 10, 14, 11, 15, 14, 23, 17, 12, 17, 14, 9,
                                21
                            },
                        new short[] { 14, 17, 18, 6 },
                        new short[]
                            {
                                25, 23, 17, 25, 48, 34, 29, 34, 38, 42, 30, 50, 58
                                , 36, 39, 28, 27, 35, 30, 34, 46, 46, 39, 51, 46,
                                75, 66, 20
                            },
                        new short[]
                            {
                                45, 28, 35, 41, 43, 56, 37, 38, 50, 52, 33, 44, 37
                                , 72, 47, 20
                            },
                        new short[]
                            {
                                80, 52, 38, 44, 39, 49, 50, 56, 62, 42, 54, 59, 35
                                , 35, 32, 31, 37, 43, 48, 47, 38, 71, 56, 53
                            },
                        new short[]
                            {
                                51, 25, 36, 54, 47, 71, 53, 59, 41, 42, 57, 50, 38
                                , 31, 27, 33, 26, 40, 42, 31, 25
                            },
                        new short[]
                            {
                                26, 47, 26, 37, 42, 15, 60, 40, 43, 48, 30, 25, 52
                                , 28, 41, 40, 34, 28, 41, 38, 40, 30, 35, 27, 27,
                                32, 44, 31
                            },
                        new short[]
                            {
                                32, 29, 31, 25, 21, 23, 25, 39, 33, 21, 36, 21, 14
                                , 23, 33, 27
                            },
                        new short[]
                            {
                                31, 16, 23, 21, 13, 20, 40, 13, 27, 33, 34, 31, 13
                                , 40, 58, 24
                            },
                        new short[]
                            {
                                24, 17, 18, 18, 21, 18, 16, 24, 15, 18, 33, 21, 14
                            },
                        new short[] { 24, 21, 29, 31, 26, 18 },
                        new short[] { 23, 22, 21, 32, 33, 24 },
                        new short[] { 30, 30, 21, 23 },
                        new short[] { 29, 23, 25, 18 },
                        new short[] { 10, 20, 13, 18, 28 },
                        new short[] { 12, 17, 18 },
                        new short[] { 20, 15, 16, 16, 25, 21 },
                        new short[] { 18, 26, 17, 22 },
                        new short[] { 16, 15, 15 }, new short[] { 25 },
                        new short[]
                            {
                                14, 18, 19, 16, 14, 20, 28, 13, 28, 39, 40, 29, 25
                            },
                        new short[] { 27, 26, 18, 17, 20 },
                        new short[] { 25, 25, 22, 19, 14 },
                        new short[] { 21, 22, 18 },
                        new short[] { 10, 29, 24, 21, 21 }, new short[] { 13 },
                        new short[] { 14 }, new short[] { 25 },
                        new short[]
                            {
                                20, 29, 22, 11, 14, 17, 17, 13, 21, 11, 19, 17, 18
                                , 20, 8, 21, 18, 24, 21, 15, 27, 21
                            }
                    };

                #endregion

                #region Public Methods and Operators

                public static void CalculateAllPlans()
                {
                    /////////////////////////////////// Easy NT and Prov and Ps /////////////////////////////////
                    const double goalVerseNumNtPvPs = (VersesInNt + (ProverbsVerseEnd - PsalmsVerseStart)) / (double)365;
                    var versePerDayNtPvPs = new List<int>[365];
                    for (int i = 0; i <= versePerDayNtPvPs.GetUpperBound(0); i++)
                    {
                        versePerDayNtPvPs[i] = new List<int>();
                    }
                    int daycount = 0;
                    int verseCount = 0;
                    int chapterCount = ChaptersInOt;
                    for (int i = BooksInOt; i < BooksInBible; i++)
                    {
                        for (int j = 0; j <= VersesInChapter[i].GetUpperBound(0); j++)
                        {
                            //look ahead. make sure not putting way too much on one day
                            if (versePerDayNtPvPs[daycount].Count() > 0
                                && (j <= (VersesInChapter[i].GetUpperBound(0) - 4) || i < (BooksInNt - 1)))
                            {
                                if (VersesInChapter[i][j] > 10
                                    && ((goalVerseNumNtPvPs * (daycount + 1)) - verseCount) * 3 < VersesInChapter[i][j])
                                {
                                    daycount++;
                                }
                            }

                            verseCount += VersesInChapter[i][j];

                            versePerDayNtPvPs[daycount].Add(chapterCount);

                            while ((verseCount) > (goalVerseNumNtPvPs * (daycount + 1))
                                   && versePerDayNtPvPs[daycount].Count() > 0)
                            {
                                daycount++;
                            }
                            chapterCount++;
                        }
                    }
                    chapterCount = 478; //psalm first chapter
                    for (int i = PsalmsBookNum - 1; i < ProverbsBookNum; i++)
                    {
                        for (int j = 0; j <= VersesInChapter[i].GetUpperBound(0); j++)
                        {
                            //look ahead. make sure not putting way too much on one day
                            if (versePerDayNtPvPs[daycount].Count() > 0
                                && (j <= (VersesInChapter[i].GetUpperBound(0) - 4) || i < (ProverbsBookNum - 1)))
                            {
                                if (VersesInChapter[i][j] > 10
                                    && ((goalVerseNumNtPvPs * (daycount + 1)) - verseCount) * 3 < VersesInChapter[i][j])
                                {
                                    daycount++;
                                }
                            }

                            verseCount += VersesInChapter[i][j];

                            versePerDayNtPvPs[daycount].Add(chapterCount);

                            while ((verseCount) > (goalVerseNumNtPvPs * (daycount + 1))
                                   && versePerDayNtPvPs[daycount].Count() > 0)
                            {
                                daycount++;
                            }
                            chapterCount++;
                        }
                    }

                    List<int>[] versePerDay;
                    List<int>[] versePerDayOt;
                    List<int>[] versePerDayNt;
                    List<int>[] versePerDayTopic;
                    List<int>[] chapterRandom;

                    DoPlansInSpecificDays(
                        365, out versePerDay, out versePerDayOt, out versePerDayNt, out versePerDayTopic, out chapterRandom);

                    //print them out
                    printoutPlan(versePerDay, "versePerDay365");
                    printoutPlan(versePerDayOt, "versePerDayOT365");
                    printoutPlan(versePerDayTopic, "versePerDayTopic365");
                    printoutPlan(chapterRandom, "chapterRandom365");
                    DoPlansInSpecificDays(
                        180, out versePerDay, out versePerDayOt, out versePerDayNt, out versePerDayTopic, out chapterRandom);

                    //print them out
                    printoutPlan(versePerDay, "versePerDay180");
                    printoutPlan(versePerDayOt, "versePerDayOT180");
                    printoutPlan(versePerDayTopic, "versePerDayTopic180");
                    printoutPlan(chapterRandom, "chapterRandom180");
                    DoPlansInSpecificDays(
                        90, out versePerDay, out versePerDayOt, out versePerDayNt, out versePerDayTopic, out chapterRandom);

                    //print them out
                    printoutPlan(versePerDay, "versePerDay90");
                    printoutPlan(versePerDayOt, "versePerDayOT90");
                    printoutPlan(versePerDayTopic, "versePerDayTopic90");
                    printoutPlan(chapterRandom, "chapterRandom90");

                    List<int>[] fast30DayNt;
                    doNTplans(30, out fast30DayNt);
                    printoutPlan(fast30DayNt, "fast30dayNT");
                    doNTplans(60, out fast30DayNt);
                    printoutPlan(fast30DayNt, "fast60dayNT");
                    doNTplans(90, out fast30DayNt);
                    printoutPlan(fast30DayNt, "fast90dayNT");

                    doChronologicNTplans(30, out fast30DayNt);
                    printoutPlan(fast30DayNt, "ChronologicallyNt30");
                    doChronologicNTplans(60, out fast30DayNt);
                    printoutPlan(fast30DayNt, "ChronologicallyNt60");
                    doChronologicNTplans(90, out fast30DayNt);
                    printoutPlan(fast30DayNt, "ChronologicallyNt90");

                    doChronologicPlans(90, out fast30DayNt);
                    printoutPlan(fast30DayNt, "Chronologically90");
                    doChronologicPlans(180, out fast30DayNt);
                    printoutPlan(fast30DayNt, "Chronologically180");
                    doChronologicPlans(365, out fast30DayNt);
                    printoutPlan(fast30DayNt, "Chronologically365");

                    printoutPlan(versePerDayNtPvPs, "versePerDayNTPvPs");
                }

                public static void PrintOutDailyPlansInHtml()
                {
                    var bn = new BibleNames("en");
                    for (int i = 0; i <= ZzAllPlansNames.GetUpperBound(0); i++)
                    {
                        Debug.WriteLine(
                            "<a name=\"" + ZzAllPlansNames[i][0].Replace(" ", "").Replace(",", "").ToLower()
                            + ZzAllPlansNames[i][1] + "\"></a><h2>" + ZzAllPlansNames[i][0] + "; in " + ZzAllPlansNames[i][1]
                            + " days; " + ZzAllPlansNames[i][2] + " minutes every day</h2>");
                        Debug.WriteLine("<table><thead><tr><th>Day</th><th>Chapters</th></tr></thead><tbody>");
                        for (int j = 0; j <= ZAllPlans[i].GetUpperBound(0); j++)
                        {
                            string row = "";
                            string lastBook = "";
                            int lastChapter = 0;
                            string savedBook = "";
                            int savedChapt = 0;
                            for (int k = 0; k <= ZAllPlans[i][j].GetUpperBound(0); k++)
                            {
                                string bookName;
                                int relChapter;
                                getBookAndRelChaptFromChapter(
                                    ZAllPlans[i][j][k], out bookName, out relChapter, bn.GetAllFullNames());
                                if (lastBook.Equals(bookName) && (lastChapter + 1) == relChapter)
                                {
                                    savedBook = bookName;
                                    if (savedChapt == 0)
                                    {
                                        savedChapt = lastChapter;
                                    }
                                }
                                else if (!string.IsNullOrEmpty(savedBook))
                                {
                                    if (!string.IsNullOrEmpty(row))
                                    {
                                        row += ", ";
                                    }
                                    row += savedBook + " " + savedChapt + "-" + lastChapter;
                                    savedBook = "";
                                    savedChapt = 0;
                                }
                                else if (!string.IsNullOrEmpty(lastBook))
                                {
                                    if (!string.IsNullOrEmpty(row))
                                    {
                                        row += ", ";
                                    }
                                    row += lastBook + " " + lastChapter;
                                }

                                lastBook = bookName;
                                lastChapter = relChapter;

                                if (k == ZAllPlans[i][j].GetUpperBound(0))
                                {
                                    //must write out the remaining
                                    if (!string.IsNullOrEmpty(savedBook))
                                    {
                                        if (!string.IsNullOrEmpty(row))
                                        {
                                            row += ", ";
                                        }
                                        row += savedBook + " " + savedChapt + "-" + lastChapter;
                                    }
                                    else
                                    {
                                        if (!string.IsNullOrEmpty(row))
                                        {
                                            row += ", ";
                                        }
                                        row += lastBook + " " + lastChapter;
                                    }
                                }
                            }
                            Debug.WriteLine("<tr><td>" + (j + 1).ToString() + "</td><td>" + row + "</td></tr>");
                        }
                        Debug.WriteLine("</tbody></table>");
                    }
                }

                #endregion

                #region Methods

                private static int BookNumToChapterNum(int bookNum)
                {
                    int returnChapterNum = 0;
                    for (int i = 0; i < bookNum; i++)
                    {
                        returnChapterNum += ChaptersInBook[i];
                    }
                    return returnChapterNum;
                }

                private static void DoPlansInSpecificDays(
                    int days,
                    out List<int>[] versePerDay,
                    out List<int>[] versePerDayOt,
                    out List<int>[] versePerDayNt,
                    out List<int>[] versePerDayTopic,
                    out List<int>[] chapterRandom)
                {
                    //////////////////////////////  straight      ////////////////////////////////////////////
                    double goalVerseNum = VersesInBible / (double)days;
                    int verseCount = 0;
                    int chapterCount = 0;
                    versePerDay = new List<int>[days];
                    for (int i = 0; i <= versePerDay.GetUpperBound(0); i++)
                    {
                        versePerDay[i] = new List<int>();
                    }
                    int daycount = 0;
                    for (int i = 0; i < BooksInBible; i++)
                    {
                        for (int j = 0; j <= VersesInChapter[i].GetUpperBound(0); j++)
                        {
                            //look ahead. make sure not putting way too much on one day
                            if (versePerDay[daycount].Count() > 0
                                && (j <= (VersesInChapter[i].GetUpperBound(0) - 4) || i < (BooksInBible - 1)))
                            {
                                if (VersesInChapter[i][j] > 10
                                    && ((goalVerseNum * (daycount + 1)) - verseCount) * 3 < VersesInChapter[i][j])
                                {
                                    daycount++;
                                }
                            }

                            verseCount += VersesInChapter[i][j];

                            versePerDay[daycount].Add(chapterCount);

                            if (verseCount >= (goalVerseNum * (daycount + 1)))
                            {
                                daycount++;
                            }
                            chapterCount++;
                        }
                    }
                    ///////////////////////////////////  old and new testament ////////////////////////////////////////////
                    double goalVerseNumOt = VersesInOt / (double)days;
                    verseCount = 0;
                    chapterCount = 0;
                    versePerDayOt = new List<int>[days];
                    for (int i = 0; i <= versePerDayOt.GetUpperBound(0); i++)
                    {
                        versePerDayOt[i] = new List<int>();
                    }
                    daycount = 0;
                    for (int i = 0; i < BooksInOt; i++)
                    {
                        for (int j = 0; j <= VersesInChapter[i].GetUpperBound(0); j++)
                        {
                            //look ahead. make sure not putting way too much on one day
                            if (versePerDayOt[daycount].Count() > 0
                                && (j <= (VersesInChapter[i].GetUpperBound(0) - 4) || i < (BooksInBible - 1)))
                            {
                                if (VersesInChapter[i][j] > 10
                                    && ((goalVerseNumOt * (daycount + 1)) - verseCount) * 3 < VersesInChapter[i][j])
                                {
                                    daycount++;
                                }
                            }
                            verseCount += VersesInChapter[i][j];

                            versePerDayOt[daycount].Add(chapterCount);

                            if (verseCount >= (goalVerseNumOt * (daycount + 1)))
                            {
                                daycount++;
                            }
                            chapterCount++;
                        }
                    }
                    versePerDayNt = new List<int>[days];
                    for (int i = 0; i <= versePerDayNt.GetUpperBound(0); i++)
                    {
                        versePerDayNt[i] = new List<int>();
                    }
                    double goalVerseNumNt = VersesInNt / (double)days;
                    daycount = 0;
                    for (int i = BooksInOt; i < BooksInBible; i++)
                    {
                        for (int j = 0; j <= VersesInChapter[i].GetUpperBound(0); j++)
                        {
                            //look ahead. make sure not putting way too much on one day
                            if (versePerDayNt[daycount].Count() > 0
                                && (j <= (VersesInChapter[i].GetUpperBound(0) - 4) || i < (BooksInNt - 1)))
                            {
                                if (VersesInChapter[i][j] > 10
                                    && ((goalVerseNumNt * (daycount + 1)) - (verseCount - VersesInOt)) * 3
                                    < VersesInChapter[i][j])
                                {
                                    daycount++;
                                }
                            }

                            verseCount += VersesInChapter[i][j];

                            versePerDayNt[daycount].Add(chapterCount);

                            while ((verseCount - VersesInOt) > (goalVerseNumNt * (daycount + 1)))
                            {
                                daycount++;
                            }
                            chapterCount++;
                        }
                    }
                    //combine old and new testament
                    for (int i = 0; i < days; i++)
                    {
                        for (int j = 0; j < versePerDayNt[i].Count(); j++)
                        {
                            versePerDayOt[i].Add(versePerDayNt[i][j]);
                        }
                    }

                    ///////////////////////////////////  By weekday topic ////////////////////////////////////////////
                    versePerDayTopic = new List<int>[days / 7 * 7];
                    for (int i = 0; i <= versePerDayTopic.GetUpperBound(0); i++)
                    {
                        versePerDayTopic[i] = new List<int>();
                    }
                    int[][] booksInTopic =
                        {
                            new[]
                                {
                                    44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
                                    63, 64
                                },
                            //epistles
                            new[] { 0, 1, 2, 3, 4 }, //penteauth law
                            new[] { 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 }, // history
                            new[] { 18 }, //psalms
                            new[] { 17, 19, 20, 21 }, //poetry
                            new[] { 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 65 },
                            //prophecy
                            new[] { 39, 40, 41, 42, 43 } //gospels
                        };
                    var goalVerseNums = new double[7];
                    var versesPerDay = new int[7];
                    var lastUsedChapter = new int[7];
                    var lastUsedBook = new int[7];
                    // calculate the verse daily goal count
                    for (int i = 0; i < 7; i++)
                    {
                        int verseCountBooks = 0;
                        for (int j = 0; j <= booksInTopic[i].GetUpperBound(0); j++)
                        {
                            for (int k = 0; k <= VersesInChapter[booksInTopic[i][j]].GetUpperBound(0); k++)
                            {
                                verseCountBooks += VersesInChapter[booksInTopic[i][j]][k];
                            }
                        }
                        goalVerseNums[i] = verseCountBooks / (days / 7.0);
                        versesPerDay[i] = 0;
                        lastUsedChapter[i] = 0;
                        lastUsedBook[i] = 0;
                    }
                    //lets do it.
                    for (int day = 0; day < (days / 7 * 7); day++)
                    {
                        int dayofweek = day % 7;
                        int week = day / 7;
                        int i;
                        for (i = lastUsedBook[dayofweek]; i <= booksInTopic[dayofweek].GetUpperBound(0); i++)
                        {
                            int j;
                            for (j = lastUsedChapter[dayofweek];
                                 j <= VersesInChapter[booksInTopic[dayofweek][i]].GetUpperBound(0);
                                 j++)
                            {
                                versesPerDay[dayofweek] += VersesInChapter[booksInTopic[dayofweek][i]][j];

                                versePerDayTopic[day].Add(BookNumToChapterNum(booksInTopic[dayofweek][i]) + j);

                                if ((versesPerDay[dayofweek]) > (goalVerseNums[dayofweek] * (week + 1)))
                                {
                                    //we need to break out to the next day!
                                    break;
                                }
                            }
                            lastUsedChapter[dayofweek] = j + 1;
                            if (j > VersesInChapter[booksInTopic[dayofweek][i]].GetUpperBound(0)
                                || lastUsedChapter[dayofweek] > VersesInChapter[booksInTopic[dayofweek][i]].GetUpperBound(0))
                            {
                                lastUsedBook[dayofweek]++;
                                lastUsedChapter[dayofweek] = 0;
                            }
                            if ((versesPerDay[dayofweek]) > (goalVerseNums[dayofweek] * (week + 1)))
                            {
                                //we need to break out to the next day!
                                break;
                            }
                        }
                    }
                    ///////////////////////////////////  Random chapter  maximal variation, maximal evenness, no continuity ////////////////////////////////////////////
                    chapterRandom = new List<int>[days];
                    for (int i = 0; i <= chapterRandom.GetUpperBound(0); i++)
                    {
                        chapterRandom[i] = new List<int>();
                    }
                    int[] chaptersRandomized = Enumerable.Range(0, ChaptersInBible).ToArray();
                    var random = new Random();
                    for (int i = chaptersRandomized.Length - 1; i > 0; i--)
                    {
                        int j = random.Next(i + 1);
                        int tmp = chaptersRandomized[i];
                        chaptersRandomized[i] = chaptersRandomized[j];
                        chaptersRandomized[j] = tmp;
                    }
                    verseCount = 0;
                    daycount = 0;
                    for (int i = 0; i < ChaptersInBible; i++)
                    {
                        int versesThisChapter = GetVersesInChapterNum(chaptersRandomized[i]);
                        //look ahead. make sure not putting way too much on one day
                        if (chapterRandom[daycount].Count() > 0 && (i < (ChaptersInBible - 3)))
                        {
                            if (versesThisChapter > 10 && ((goalVerseNum * (daycount + 1)) - verseCount) * 3 < versesThisChapter)
                            {
                                daycount++;
                            }
                        }

                        verseCount += versesThisChapter;
                        chapterRandom[daycount].Add(chaptersRandomized[i]);
                        if ((verseCount) > (goalVerseNum * (daycount + 1)))
                        {
                            daycount++;
                        }
                    }
                }

                private static int GetVersesInChapterNum(int chapt)
                {
                    int countedChapters = 0;
                    for (int i = 0; i < BooksInBible; i++)
                    {
                        for (int j = 0; j <= VersesInChapter[i].GetUpperBound(0); j++)
                        {
                            if (chapt == countedChapters)
                            {
                                return VersesInChapter[i][j];
                            }
                            countedChapters++;
                        }
                    }

                    return 0;
                }

                private static void doChronologicNTplans(int days, out List<int>[] fast30DayNt)
                {
                    const int ChaptersInNt = 260;
                    const int ChaptersInOt = 929;
                    /////////////////////////////////// chronologic fast30dayNT new testament ////////////////////////////////////////////
                    int verseCount = 0;
                    int chapterCount = ChaptersInOt;
                    fast30DayNt = new List<int>[days];
                    for (int i = 0; i <= fast30DayNt.GetUpperBound(0); i++)
                    {
                        fast30DayNt[i] = new List<int>();
                    }

                    double goalVerseNum = VersesInNt / (double)days;
                    int daycount = 0;
                    for (int i = ChaptersInOt; i < ChaptersInOt + ChaptersInNt; i++)
                    {
                        int versesThisChapter = GetVersesInChapterNum(BibleChaptersInChronologicalOrder[i]);
                        //look ahead. make sure not putting way too much on one day
                        if (fast30DayNt[daycount].Count() > 0 && (i < (ChaptersInBible - 3)))
                        {
                            if (versesThisChapter > 10 && ((goalVerseNum * (daycount + 1)) - verseCount) * 3 < versesThisChapter)
                            {
                                daycount++;
                            }
                        }

                        verseCount += versesThisChapter;
                        fast30DayNt[daycount].Add(BibleChaptersInChronologicalOrder[i]);
                        if ((verseCount) > (goalVerseNum * (daycount + 1)))
                        {
                            daycount++;
                        }
                    }
                }

                private static void doChronologicPlans(int days, out List<int>[] fast30Day)
                {
                    /////////////////////////////////// chronologic fast30dayNT new testament ////////////////////////////////////////////
                    int verseCount = 0;
                    fast30Day = new List<int>[days];
                    for (int i = 0; i <= fast30Day.GetUpperBound(0); i++)
                    {
                        fast30Day[i] = new List<int>();
                    }

                    double goalVerseNum = VersesInBible / (double)days;
                    int daycount = 0;
                    for (int i = 0; i < ChaptersInBible; i++)
                    {
                        int versesThisChapter = GetVersesInChapterNum(BibleChaptersInChronologicalOrder[i]);
                        //look ahead. make sure not putting way too much on one day
                        if (fast30Day[daycount].Count() > 0 && (i < (ChaptersInBible - 3)))
                        {
                            if (versesThisChapter > 10 && ((goalVerseNum * (daycount + 1)) - verseCount) * 3 < versesThisChapter)
                            {
                                daycount++;
                            }
                        }

                        verseCount += versesThisChapter;
                        fast30Day[daycount].Add(BibleChaptersInChronologicalOrder[i]);
                        if ((verseCount) > (goalVerseNum * (daycount + 1)))
                        {
                            daycount++;
                        }
                    }
                }

                private static void doNTplans(int days, out List<int>[] fast30DayNt)
                {
                    ///////////////////////////////////  fast30dayNT new testament ////////////////////////////////////////////
                    int verseCount = 0;
                    int chapterCount = ChaptersInOt;
                    fast30DayNt = new List<int>[days];
                    for (int i = 0; i <= fast30DayNt.GetUpperBound(0); i++)
                    {
                        fast30DayNt[i] = new List<int>();
                    }

                    double goalVerseNumNt = VersesInNt / (double)days;
                    int daycount = 0;
                    for (int i = BooksInOt; i < BooksInBible; i++)
                    {
                        for (int j = 0; j <= VersesInChapter[i].GetUpperBound(0); j++)
                        {
                            //look ahead. make sure not putting way too much on one day
                            if (fast30DayNt[daycount].Count() > 0
                                && (j <= (VersesInChapter[i].GetUpperBound(0) - 4) || i < (BooksInBible - 1)))
                            {
                                if (VersesInChapter[i][j] > 10
                                    && ((goalVerseNumNt * (daycount + 1)) - verseCount) * 3 < VersesInChapter[i][j])
                                {
                                    daycount++;
                                }
                            }

                            verseCount += VersesInChapter[i][j];

                            fast30DayNt[daycount].Add(chapterCount);

                            while ((verseCount) > (goalVerseNumNt * (daycount + 1)))
                            {
                                daycount++;
                            }
                            chapterCount++;
                        }
                    }
                }

                private static void getBookAndRelChaptFromChapter(
                    int chapterNum, out string bookName, out int chapterNumRel, string[] bookNames)
                {
                    bookName = "";
                    chapterNumRel = 0;
                    int sumChapters = 0;
                    for (int i = 0; i < ChaptersInBook.Length; i++)
                    {
                        sumChapters += ChaptersInBook[i];
                        if (sumChapters > chapterNum)
                        {
                            bookName = bookNames[i];
                            chapterNumRel = chapterNum - (sumChapters - ChaptersInBook[i]) + 1;
                            break;
                        }
                    }
                }

                private static void printoutPlan(IEnumerable<List<int>> plan, string name)
                {
                    Debug.WriteLine("int[][] " + name + "={");
                    foreach (var t in plan)
                    {
                        string text = "";
                        text += "new int[] {";
                        text = t.Aggregate(text, (current, chapt) => current + (chapt.ToString() + ","));
                        Debug.WriteLine(text + "},");
                    }
                    Debug.WriteLine("};");
                }
                #endregion
        */
    }
}